Python If-Statement always evaluates to true?
本问题已经有最佳答案,请猛点这里访问。
我是Python的新手,并决定尝试一些基础知识。
为什么这总是评估为真? 在UserInput中键入"False"应该评估为False?
1 2 3 4 5 | true_or_false=input("Is it true or false?") if true_or_false: print("It's true") if not true_or_false: print("Well,it is not true") |
使用最新的Python版本(3.smth)
<5233>
将给变量
1 | if true_or_false |
将测试是否为空字符串。
解决方案是将字符串与字符串值进行比较:
1 | if true_or_false == 'True' |
如果你想用大写和小写字母来防止错误,你可以这样做:
1 | if true_or_false.lower() == 'true' |
1 2 | if object: ... |
是相同的:
1 2 | if bool(object): ... |
您将看到任何长度大于0的字符串的真实性值
1 2 3 4 5 | In [82]: bool('True') Out[82]: True In [83]: bool('False') Out[83]: True |
实质上,您需要将
1 2 3 | if string == 'True': ... elif string == 'False': |
在比较中使用字符串时,除非您知道自己在做什么,否则请使用
另外,了解一些其他python内置函数的真实性很有用:
1 2 3 4 5 6 7 8 9 10 11 | In [84]: bool(None) Out[84]: False In [85]: bool({}) Out[85]: False In [86]: bool([]) Out[86]: False In [87]: bool(['a']) Out[87]: True |
python中的字符串总是计算为