Python 为什么这个 if 语句返回 True?

Python why this if statement returns True?

提问人:Mammadali Mammadaliyev 提问时间:5/12/2022 更新时间:5/12/2022 访问量:57

问:

我想知道为什么它返回 True:

if False or True and True == True and (False == True or False == (not True)) or False and False and True:
    pass

它最终不接受“和 False”部分为 False 吗? 不是所有带有“and”的语句都返回 True 吗?

python-3.x if-statement 布尔 逻辑

评论

0赞 Mammadali Mammadaliyev 5/12/2022
上面的代码是否等于:if False or True and True == True and (False == True or False == (not True)) or (False and False and True):
0赞 Karl Knechtel 5/12/2022
文档中解释了操作顺序。从这里开始,这是一个机械地应用规则的问题。
0赞 Karl Knechtel 5/12/2022
“不是所有带有”and“的语句都返回 True 吗?”为什么会这样?你试过自己吗?False and True

答:

0赞 Random Davis 5/12/2022 #1

从:

False or True and True == True and (False == True or False == (not True)) or False and False and True

先解决括号:

(False == True or False == (not True))

先解决括号 - 是:not TrueFalse

(False == True or False == False)

下一个操作顺序: :==

((False == True) or (False == False))

结果是:

((False) or (True))

下一个操作顺序: :or

(True)

现在我们有:

False or True and True == True and (True) or False and False and True

下一个操作顺序: :==

False or True and (True == True) and True or False and False and True

结果是:

False or True and (True) and True or False and False and True

下一个操作顺序: :and

False or ((True and True) and True) or ((False and False) and True)

结果是:

False or ((True) and True) or ((False) and True)

然后:

False or (True) or (False)

现在运算符:or

((False or True) or False)

然后:

((True) or False)

这导致因为是 .TrueTrue or FalseTrue