如何评估Python代码:
not not True or False and not True
就我自己而言,我有两个猜测:
方法1:
步骤代码
1 不是真或假而不是真实的 2 False 或False False
3 True 或False和FUE 4 True 和False
5 错误
方法2:
步骤代码
1 不是真或假而不是真实的 2 False 或False False
3 True 或 False
4 True
答案 0 :(得分:3)
从Python's operators precedence:
的表格中or
的优先级低于and
其优先级较低not
据说:
not not True or False and not True
等同于
((not (not True)) or (False and (not True)))
and
和or
可以保证从左到右和进行评估:
or
的左项是True
,则永远不会评估正确的术语(因为True or whatever
在布尔逻辑中是True
)and
的左项是False
,则永远不会评估正确的术语(因为False and whatever
在布尔逻辑中是False
)所以,举个例子:
第一步是评估not True
至False
:
((not (not True)) or (False and (not True)))
^^^^^^^^
False
然后not False
评估为True
:
((not False ) or (False and (not True)))
^^^^^^^^^^^^^^
True
因为我们没有True or ...
Python立即停止使用结果True
进行评估:
( True or (False and (not True)))
^^^^^^^^^^^^^^ ......................
True (right-hand side ignored)
答案 1 :(得分:0)
要理解这一点,您应该看到Operator precedence。
您的代码相当于:
((not (not True)) or (False and (not True)))
现在你应该能够说出答案是正确的以及为什么。