首页 > 解决方案 > If语句的超级混乱

问题描述

我对此感到非常困惑。我有一些公式可以运行一个基数值并从该基值中添加或减去。如果我只运行减法的代码(我在每组数据中大约有 7 个数字),代码行运行良好,我可以确认 7 个减法中只有 4 个的输出,但是当我运行所有四个公式时,我走开了所有内容都添加了 +1 的表格。所以我的数据集中的所有东西都有+1,即使当我只用减法运行它时,我只调整满足条件的四个,它不会在其他不满足条件的三个上执行。当我添加第三个和第四个等式时,为什么当它们不满足该条件时,它会向所有添加 +1?

    if home_team_shots_on_goal.values / away_team_shots_on_goal.values <= 0.95 or home_team_shots_on_goal.values / away_team_shots_on_goal.values >= 1.05:
        home_team_ppg = home_team_ppg - 0.5

    if away_team_shots_on_goal.values / home_team_shots_on_goal.values <= 0.95 or away_team_shots_on_goal.values / home_team_shots_on_goal.values >= 1.05:
        away_team_ppg = away_team_ppg - 0.5

    if home_team_shots_on_goal.values / away_team_shots_on_goal.values <= 1.05 or home_team_shots_on_goal.values / away_team_shots_on_goal.values >= 0.95:
        home_team_ppg = home_team_ppg + 0.5

    if away_team_shots_on_goal.values / home_team_shots_on_goal.values <= 1.05 or away_team_shots_on_goal.values / home_team_shots_on_goal.values >= 0.95:
        away_team_ppg = away_team_ppg + 0.5

标签: python-3.xif-statement

解决方案


我认为这是一个数学问题,而不是一个 if 问题。从你的第一个条款:

home_team_shots_on_goal.values / away_team_shots_on_goal.values <= 0.95

从你的第三个条款:

home_team_shots_on_goal.values / away_team_shots_on_goal.values <= 1.05

如果第一个子句为真,那么第三个子句也为真,因为0.95小于1.05

(calculated_ratio) <= 0.95 <= 1.05

这意味着如果您的第一个子句减去 0.5,您的第三个子句将添加 0.5。你的整个事情都存在这个问题,这可能通过使用elif而不是新的if子句来解决 - 但正确地说你应该输入一些输入值和你期望的输出。

FWIW 带有一些值分配和更短的手,这在代码中变得更加清晰:

home_away_ratio = home_team_shots_on_goal.values / away_team_shots_on_goal.values
away_home_ratio = away_team_shots_on_goal.values / home_team_shots_on_goal.values

if not (0.95 < home_away_ratio < 1.05):  # Is the ratio outside these values?
    home_team_ppg +=  -0.5
... and so on

推荐阅读