Python If-Statement总是评估为true?

时间:2017-07-12 09:12:25

标签: python python-3.x if-statement

我是Python的新手,并决定尝试一些基础知识。

为什么这总是评估为真?输入" False"因为UserInput应该评估为假?

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)

3 个答案:

答案 0 :(得分:1)

if条件评估传递给它的对象的“真实性”:

if object:
    ...

与:

相同
if bool(object):
    ...

您会看到任何长度大于0的字符串的真值为True

In [82]: bool('True')
Out[82]: True

In [83]: bool('False')
Out[83]: True

从本质上讲,您需要将if更改为:

if string == 'True':
    ...
elif string == 'False':

在比较中使用字符串时,请使用==运算符,除非您知道自己在做什么。

此外,了解其他一些python内置函数的真实性很有用:

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

答案 1 :(得分:1)

true_or_false=input("Is it true or false?")

将为变量true_or_false提供一个字符串值。

if true_or_false

将测试是否为空字符串。

解决方案是将字符串与字符串值进行比较:

if true_or_false == 'True'

如果你想用大写和小写字母来防止错误,你可以这样做:

if true_or_false.lower() == 'true'

答案 2 :(得分:0)

python中的字符串总是计算为True,除非它们是空的。您需要检查字符串是否等于"True"