为什么 5 <= -15 == 5 >= 1 != 20 是假的?[复制]

Why 5 <= -15 == 5 >= 1 != 20 is False? [duplicate]

提问人:Hari Kiran 提问时间:1/19/2022 最后编辑:Maik LowreyHari Kiran 更新时间:2/13/2022 访问量:103

问:

有人能告诉我为什么是假的吗?5 <= -15 == 5 >= 1 != 20

因为当我试图解决它时,我做了以下事情:

i) <= , >= 具有更高的优先级,因此它变为False == True != 20

ii) ==,!= 具有相同的优先级,因此基于关联性,即从左到右变为False != 20

iii) 最后,答案是True

但是,当我在 python 解释器中尝试相同的操作时,它返回False

我想知道为什么会这样? 提前致谢。

Python 关联性

评论

1赞 Samathingamajig 1/19/2022
对于在 python 中寻找运算符优先级的人,这里
0赞 Traummaennlein 1/19/2022
你有没有试过把问题分成更小的和平,看看你的解释在哪一点上与现实不符?
1赞 MisterMiyagi 1/19/2022
您可能希望查看实际的运算符优先级:“请注意,比较、成员资格测试和标识测试都具有相同的优先级,并且具有从左到右的链接功能,如”比较“部分所述。"
0赞 MisterMiyagi 1/19/2022
@Samathingamajig 该页面不完整且明显错误,尤其是对于与此问题相关的操作员而言。请不要链接到第三方参考资料,除非您确保它们与实际语言参考资料相匹配。
2赞 deceze 1/19/2022
这是因为已经是,所以......False5 <= -15False-15 == 5

答:

1赞 ikegami 1/19/2022 #1

此处记录了 Python 的运算符优先级。与您声称的相反,所有这些比较运算符都具有相同的优先级。

通常,人们会优先使用关联性来处理关系。但是比较运算符很特殊。Python 支持链接。这意味着

x relop1 y relop2 z

x relop1 y and y relop2 z

(除了只评估一次。y

所以

    5 <= -15 == 5 >= 1 != 20
=   ( 5 <= -15 ) and ( -15 == 5 ) and ( 5 >= 1 ) and ( 1 != 20 )
=   False and False and True and True
=   False

评论

0赞 Kelly Bundy 1/19/2022
我发现这有点误导,因为这些比较实际上并没有得到评估。and False and True and True
0赞 ikegami 1/19/2022
@Kelly邦迪,“=”被视为“等同于”