为什么Python3中bool(input())相加的运行结果总为2?
问题原因解析
bool()函数的字符串转换规则不符合预期
Python 中对字符串做布尔转换时,仅判断字符串是否为空:只要是非空字符串,
bool()返回值永远为True,和字符串的内容没有关系。
也就是说哪怕你输入的内容是"False",bool("False")的返回值依然是True,只有空字符串""转换后才是False。
input()函数的读取逻辑和输入方式不匹配
每次调用
input()只会读取完整的一行输入。如果你把两个值一次性输入在同一行,第一次调用input()会直接把整行内容全部读取赋值给x,第二次调用input()会等待你输入第二行内容,只要你第二次输入的内容不是空串,转换后的y也为True。
两个True相加的结果就是2,因此不管你输入的内容是True True、False False还是True False,最终输出结果都是2。
修复方案
如果你需要实现输入两个布尔值,输出对应求和结果的需求,可以参考以下代码:
# 单次读取一行输入,拆分出两个输入值 val1, val2 = input().split() # 根据字符串内容判断对应的布尔值 x = val1.strip() == 'True' y = val2.strip() == 'True' print(x + y)
内容的提问来源于stack exchange,提问作者Murali Sankar
相关产品推荐
相关产品推荐

