Python 布尔 + 布尔 returns 值 2

Python bool + bool returns value 2

当我在python3

中执行这段代码
x= bool(input())
y= bool(input())
print(x+y)

当我输入 True TrueFalse FalseTrue False 时,
我得到的输出为 2.
为什么会这样?我期望 10 作为输出。

Input 将您的输入转换为 string 格式!
bool(str)给你True状态!然后你试图做 True + True 所以你得到 2!

x = bool(input()) #--> x= True
y = bool(input()) #--> y= True
print(x+y) #--> True + True = 2

input() in Python 3 returns 一个字符串。不执行任何数据转换。因此,您获得的输入实际上是字符串 "True" and/or "False"。然后bool()应用于非空字符串returnsTrue.

>>> bool("True")
True
>>> bool("False")
True
>>> bool("just about anything")
True
>>> bool("") # except an empty string
False

这就是为什么无论您输入什么,您总是得到 2。两个输入都变为 True,在数字上下文中等于 1。

>>> True == 1
True

虽然如果您这样做人们会冲您大吼大叫,但 eval() 是最方便的(尽管很危险!)评估字符串的方法,就好像它是 Python 代码:

>>> eval("True")
True
>>> eval("False")
False

这很危险,因为 eval() 会计算 any Python 表达式,所以如果你不相信你的输入,它会欺骗你的程序,让它只做关于任何事情。