关于x<的混淆y< =在python中的z

时间:2017-04-07 07:12:25

标签: python python-2.7 python-3.x logical-operators

我是python中的新手。我有三个变量xyz作为int。我在if条件下比较了三个变量。我对跟踪代码结果感到困惑。

表达式x < y <= z的计算结果为false。

我们假设x = 10y = 5z = 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"

2 个答案:

答案 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,并且从左到右进行评估。

与C和C ++不同,

逻辑AND 在Python中没有关联性。这类运算符的序列有单独的规则,不能表示为关联性。

如果第一个参数是 true

x < y and y <= z仅评估第二个参数,因为and是一个短路运算符。

答案 1 :(得分:0)

该表达式评估为:

if (x < y and y < z):
    pass

所以现在你明白为什么它是假的是因为x不小于y