布尔运算符 'and',如果一个表达式为 False,则期望 False 答案?

Boolean operator 'and', expect False answer if one expression is False?

提问人:Jaime Cordoba 提问时间:5/18/2023 最后编辑:ShadowRangerJaime Cordoba 更新时间:5/20/2023 访问量:36

问:

我是一个自学了 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,所以我想我没有看我应该看什么,知道答案会很尴尬。谢谢。<

python-3.x 逻辑 表达式 布尔运算

评论

0赞 juanpa.arrivillaga 5/18/2023
因为要打印,因为将计算为print(3 < 5)True3 < 5True

答:

0赞 Viraj Shah 5/18/2023 #1

因为你不是在打印,所以你是在打印。(3 < 4) and (6 < 5)3 < 4

首先:您正在调用打印函数

调用函数时,您可能还记得使用括号为函数提供参数。例如:

print("Hello world")

将打印,因为这是提供给它的参数。Hello World

同样,当您调用函数时 – 此表达式实际上是 true。print3 < 4

第二:你的布尔表达式格式不正确

当你说:

a and b

Python 检查两者是否都为 true。因此,如果您这样做:ab

print(3 < 4) and (6 < 5)

a = print(3 < 4)b = (6 < 5)

第三:你错了:表达式的计算结果为False

你说表达式的计算结果为 .但这实际上是不正确的。表达式的计算结果为 因为 (6 < 5)...但你只打印出来.TrueFalse3 < 4

第四:你不需要括号

Python 被创建为一种简单、干净且可读的语言。通过向代码中添加不必要的符号和标记,可以对其进行混淆。这会导致代码的可读性降低,并可能导致许多错误,例如您的错误。

始终避免在不需要的地方使用括号。你可以通过写同样的事情来完成:

print(3 < 4) and 6 < 5

但是,您的意思是完全不同的东西。你的意思是写:*

print(3 < 4 and 6 < 5)

评论

0赞 ShadowRanger 5/20/2023
对第 #3 点的吹毛求疵:整个表达式的计算结果,如所写,计算结果为 ,而不是技术上(尽管在布尔上下文中为 false),因为它本身返回 ,并返回链中计算的最后一件事,如果表达式肯定是假的,则短路,因此它甚至从不检查。它是ing(因为那是你告诉它打印的)。NoneFalseNoneprintNoneand6 < 5printTrue
0赞 Jaime Cordoba 5/24/2023
感谢您的回复,我已经理解您所说的话并更改它,因此,print(3 < 4 和 6 < 5) = False