Python小于/大于问题
我一直在尝试编写此程序,并搜索此问题的修复/答案。我对编写Python还不熟悉Python小于/大于问题,python,math,python-3.x,equation,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 E
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!")
正如你所看到的,我从来没有得到过关键的输出。好的输出在达到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)
谢谢你的帮助正如其他海报所指出的,主要问题是您试图将字符串当作数字进行比较,这将失败,因为字符串比较的操作方式(从左侧开始,每次一个字符)。即使
100>70
是真的,“100”>“70”
不是真的;字符7
大于字符1
您需要做的是将所有内容更改为整数,可能是通过将字符串包装到int()
函数中。但是一旦你这么做了,你的代码中仍然有一个缺陷。让我们浏览一个使用BatPower=25
的示例
if BatPower >= 70:
不,25>=70
不是真的。下一行:
elif BatPower <= 50:
elif BatPower字符串“按字典顺序”比较。换句话说,它比较第一个字符,然后是第二个,然后是第三个
如果其中一个字符“大于”另一个字符,则设置整个字符串的比较。所以
"100" < "20"
不要使用字符串来指定power-Python无法比较这样的字符串。使用数字代替比较字符串,例如'100'<'2'
@MartinPieters:OP还有一个问题与字符串比较无关。程序的逻辑看起来不会返回CRITICAL,因为任何数字nHere都是逻辑问题的答案,而CRITICAL永远不是输出。因为n OP将“100”
分配给BatPower
@MartijnPieters是的,但他问的是他分配给它其他值的场景。但是BatPower
不是整数,这是整点。@MartijnPieters这是真的,因此对我的答案进行了编辑。但是即使他把所有的东西都转换成整数,他仍然会有上面的问题。当然,但这是第二个问题。
"100" < "20"
BatPower = 100
if BatPower >= 75:
print("BatPower - GOOD")