python-3.x - 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
解决方案
我认为这是一个数学问题,而不是一个 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
推荐阅读
- swift - CIFilter 返回错误定位的 CIImage
- java - 创建新项目后,Ktor 示例代码未运行
- flutter - Flutter 2.0 Firestore:未为类“Object?”定义运算符“[]”
- python - 如何获取特定 MySQL 列的相同单词数?
- ruby-on-rails - 如何知道一个属性是否被委托?
- sql - 具有关系的记录的版本控制概念(外键)[数据库]
- node.js - 无法更改 nodejs 中 sftp 客户端的 .then() 和 .catch() 中的局部变量 | 天蓝色的功能
- pandas - Pandas with Series 中的重新索引如何工作?
- javascript - 递归使用 RxJs
- haskell - 尝试用 haskell 中的给定字符替换字符串中的字符(没有预定义的函数)。例如,输入 'hihi' 到 'haha'