我是python中的新手。我有三个变量x
,y
,z
作为int
。我在if
条件下比较了三个变量。我对跟踪代码结果感到困惑。
表达式x < y <= z
的计算结果为false。
我们假设x = 10
,y = 5
和z = 0
。如果x < y
变为错误,则False <= 0
会变为 True 。 但输出为False。为什么?
我的python脚本:
#!/usr/bin/python
x = 10
y = 5
z = 0
if (x < y < z):
print"True"
else:
print"False"
答案 0 :(得分:2)
document说:
比较可以任意链接;例如,x&lt; y&lt; = z是 相当于x&lt; y和y&lt; = z,除了y仅被评估一次 (但是在两种情况下,当发现x
x < y <= z
既不表示(x < y) <= z
也不表示x < (y <= z)
。 x < y <= z
相当于x < y and y <= z
,并且从左到右进行评估。
逻辑AND 在Python中没有关联性。这类运算符的序列有单独的规则,不能表示为关联性。
如果第一个参数是 true , x < y and y <= z
仅评估第二个参数,因为and
是一个短路运算符。
答案 1 :(得分:0)
该表达式评估为:
if (x < y and y < z):
pass
所以现在你明白为什么它是假的是因为x
不小于y