提问人:Jaime Cordoba 提问时间:5/18/2023 最后编辑:ShadowRangerJaime Cordoba 更新时间:5/20/2023 访问量:36
布尔运算符 'and',如果一个表达式为 False,则期望 False 答案?
Boolean operator 'and', expect False answer if one expression is False?
问:
我是一个自学了 1 周的 python3 家伙,我进入了比较和布尔运算符并学习了这个:
True and True True
True and False False
False and True False
False and False False
所以,我打电话给
print(3 < 4) and (6 < 5)
True + False
那么,我为什么会得到?True
我已经尝试了所有其他布尔值,试图犯一些类似的错误,改变我输入这个()符号的方式,在python导师中输入这一行,结果是相同的,让我认为6是次要的,然后是5,所以我想我没有看我应该看什么,知道答案会很尴尬。谢谢。<
答:
0赞
Viraj Shah
5/18/2023
#1
因为你不是在打印,所以你是在打印。(3 < 4) and (6 < 5)
3 < 4
首先:您正在调用打印函数
调用函数时,您可能还记得使用括号为函数提供参数。例如:
print("Hello world")
将打印,因为这是提供给它的参数。Hello World
同样,当您调用函数时 – 此表达式实际上是 true。print
3 < 4
第二:你的布尔表达式格式不正确
当你说:
a and b
Python 检查两者是否都为 true。因此,如果您这样做:a
b
print(3 < 4) and (6 < 5)
a = print(3 < 4)
和b = (6 < 5)
第三:你错了:表达式的计算结果为False
你说表达式的计算结果为 .但这实际上是不正确的。表达式的计算结果为 因为 (6 < 5)...但你只打印出来.True
False
3 < 4
第四:你不需要括号
Python 被创建为一种简单、干净且可读的语言。通过向代码中添加不必要的符号和标记,可以对其进行混淆。这会导致代码的可读性降低,并可能导致许多错误,例如您的错误。
始终避免在不需要的地方使用括号。你可以通过写同样的事情来完成:
print(3 < 4) and 6 < 5
但是,您的意思是完全不同的东西。你的意思是写:*
print(3 < 4 and 6 < 5)
评论
0赞
ShadowRanger
5/20/2023
对第 #3 点的吹毛求疵:整个表达式的计算结果,如所写,计算结果为 ,而不是技术上(尽管在布尔上下文中为 false),因为它本身返回 ,并返回链中计算的最后一件事,如果表达式肯定是假的,则短路,因此它甚至从不检查。它是ing(因为那是你告诉它打印的)。None
False
None
print
None
and
6 < 5
print
True
0赞
Jaime Cordoba
5/24/2023
感谢您的回复,我已经理解您所说的话并更改它,因此,print(3 < 4 和 6 < 5) = False
评论
print(3 < 5)
True
3 < 5
True