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

我一直在尝试编写此程序,并搜索此问题的修复/答案。我对编写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!")
正如你所看到的,我从来没有得到过关键的输出。好的输出在达到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")