提问人:sana 提问时间:11/4/2023 最后编辑:quamranasana 更新时间:11/4/2023 访问量:25
我想知道哪个决定了输出,在这种情况下,不适用于第一个条件或两者兼而有之
I want to know which determines the output like not in this case applies to first condition only or both
问:
x=(not (5==5) and (10<12))
print(x)
执行时。不否定第一个表达式或两者兼而有之?
在我看来,“not”应该只用 (5==5) 执行,但我的同事说它会影响括号中的整个表达式,比如 (5==5) 和 (10<12)。
答:
0赞
fuad ashraful
11/4/2023
#1
你可以按照我使用的方法。而不是,我们可以放置或操作来验证答案。结果显示 True 。由于结果为真,因此我们可以说不是 (5==5) 首先适用。如果 not 操作使用 ((5==5) 或 (10<12)) 运行,则最终结果应为 False。希望它有助于理解。
评论
0赞
sana
11/5/2023
谢谢。我也用OR做了,它的工作方式和你说的一样。
0赞
sana
11/5/2023
对不起,我无法理解你的第二句话。>>>不是 0 和 2 2 Python 计算的不是 0,因为它是 True,所以继续通过 and。当你说不是 0 时,为什么这是真的。不应该是假的吗?
0赞
tdelaney
11/4/2023
#2
这一切都归结为操作员优先级。看表,是比所以它先走。所以你是对的,与.not
and
not
(5==5)
您可以使用更简单的示例进行测试。
>>> not 1 and 2
False
Python 计算过,因为它是 ,它使操作短路。not 1
False
and
>>> not 0 and 2
2
Python 计算并因为它是 True,因此继续通过 .not 0
and
>>> not (0 and 2)
True
你同事的预测是错误的。
>>> (not 0) and 2
2
你的预测奏效了!
评论
0赞
sana
11/5/2023
对不起,我无法理解你的第二句话。
0赞
tdelaney
11/5/2023
在 中,python 首先计算了 ,即 。现在表达式是 。由于测试两边都是,它仍然需要评估右边。 正在制作表达式。 并且有点奇怪 - 它们返回最后计算的值,而不是简单的 or . 是最后评估的东西,所以这就是你得到的。not 0 and 2
not 0
True
True and 2
and
True
2
True
True and True
and
or
True
False
2
0赞
tdelaney
11/5/2023
如果你有一个这样的表达方式 - 它有点奇怪。你要么得到,要么得到任何价值。not x and y
False
y
评论