Python 布尔 + 布尔 returns 值 2
Python bool + bool returns value 2
当我在python3
中执行这段代码
x= bool(input())
y= bool(input())
print(x+y)
当我输入 True True
或 False False
或 True False
时,
我得到的输出为 2
.
为什么会这样?我期望 1
和 0
作为输出。
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 表达式,所以如果你不相信你的输入,它会欺骗你的程序,让它只做关于任何事情。
当我在python3
x= bool(input())
y= bool(input())
print(x+y)
当我输入 True True
或 False False
或 True False
时,
我得到的输出为 2
.
为什么会这样?我期望 1
和 0
作为输出。
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 表达式,所以如果你不相信你的输入,它会欺骗你的程序,让它只做关于任何事情。