为什么 5 <= -15 == 5 >= 1 != 20 是错误的?
Why 5 <= -15 == 5 >= 1 != 20 is False?
谁能告诉我为什么 5 <= -15 == 5 >= 1 != 20
是 False。
因为当我试图解决它时,我做了以下事情:
i) <= , >= 具有更高的优先级,因此它变为 False == True != 20
ii) ==,!= 具有相同的优先级,因此基于关联性,即从左到右变为 False != 20
iii) 最后,答案变成了True
但是,当我在 python 解释器中尝试相同时,它返回 False
我想了解为什么会这样?
提前致谢。
Python 的运算符优先级记录在案 here。与您声称的相反,所有这些比较运算符都具有相同的优先级。
通常,人们会优先考虑关联性来处理关系。但是比较运算符是特殊的。 Python 支持 chaining。这意味着
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
谁能告诉我为什么 5 <= -15 == 5 >= 1 != 20
是 False。
因为当我试图解决它时,我做了以下事情:
i) <= , >= 具有更高的优先级,因此它变为 False == True != 20
ii) ==,!= 具有相同的优先级,因此基于关联性,即从左到右变为 False != 20
iii) 最后,答案变成了True
但是,当我在 python 解释器中尝试相同时,它返回 False
我想了解为什么会这样? 提前致谢。
Python 的运算符优先级记录在案 here。与您声称的相反,所有这些比较运算符都具有相同的优先级。
通常,人们会优先考虑关联性来处理关系。但是比较运算符是特殊的。 Python 支持 chaining。这意味着
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