Python Less / Greater than issue

时间:2014-07-18 16:43:38

标签: python math python-3.x equation

我一直在尝试编写此程序并搜索此问题的修复程序/答案。我是编写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)

感谢您的帮助!

2 个答案:

答案 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")