我一直在尝试编写此程序并搜索此问题的修复程序/答案。我是编写Python的新手。
BatPower = "100"
if BatPower >= "70":
print("BatPower - GOOD")
elif BatPower <= "50":
print("BatPower - OK")
elif BatPower <= "30":
print("BatPower - CRITICAL")
else:
print("CRITICAL ERROR READING BATPOWER!")
因此,您可以看到'BatPower =“100”'但不返回“BatPower - GOOD”值,而是返回“BatPower - OK”。当我输入'BatPower =“2”'时。它返回“BatPower - OK”
以下是输出的其他一些输入:
BatPower = "75"
BatPower - GOOD
BatPower = "30"
BatPower - OK
BatPower = "29"
BatPower - OK
BatPower = "99"
BatPower - GOOD
BatPower = "1"
BatPower - OK
正如您所看到的,我从未获得过CRITICAL输出。 GOOD输出效果很好,直到达到100。
编辑: 最终工作代码:
BatPower = 60
BatStatus = "Passing..."
if BatPower >= 70:
BatStatus="BatPower - GOOD"
elif BatPower >= 30:
BatStatus="BatPower - OK"
elif BatPower >= 0:
BatStatus="BatPower - CRITICAL"
else:
BatStatus="CRITICAL ERROR READING BATPOWER!"
print(BatStatus)
感谢您的帮助!
答案 0 :(得分:3)
正如其他海报所指出的那样,主要的问题是你试图比较字符串就好像它们是数字一样,因为字符串比较的运行方式会失败(一次一个字符,从剩下)。即使100 > 70
为真,"100" > "70"
也不是;角色7
大于角色1
。
您需要做的是将所有内容更改为整数,方法是将字符串包装在int()
函数中。但是一旦你这样做,代码中仍然存在缺陷。让我们来看一个BatPower = 25
的例子。
if BatPower >= 70:
不,25 >= 70
不是真的。下一行:
elif BatPower <= 50:
从25 <= 50
起,这确实评估为真。因此,在每个步骤中,您都需要>=
而不是<=
。这将解决另一个问题。
答案 1 :(得分:2)
字符串比较&#34;按字典顺序排列&#34;。换句话说,它比较第一个字符,然后是第二个字符,然后是第三个字符......
如果其中一个角色是&#34;大于&#34;另一个,然后设置整个字符串的比较。所以,
"100" < "20"
实际上是True
因为"1" < "2"
。
外卖就是这样 - 如果您要比较数字数据,请使用数字而不是字符串。它会让你的生活更轻松 - 例如:
BatPower = 100
if BatPower >= 75:
print("BatPower - GOOD")