2017-04-07 179 views
2

我是python中的新手。我有三個變量x,y,z作爲int。我在if條件下比較了三個變量。我對以下代碼結果感到困惑。在python中對x <y <= z感到困惑

表達式x < y <= z的計算結果爲false。

我們假設x = 10,y = 5z = 0。如果x < y變成,則False <= 0變成但輸出爲False。爲什麼?

我的python腳本:

#!/usr/bin/python 

x = 10 
y = 5 
z = 0 

if (x < y < z): 
     print"True" 
else: 
     print"False" 
+0

'X

+0

與其他語言不同的行爲。 – trincot

+0

@trincot:Rust和Coffeescript支持相同的概念。 –

回答

2

document說:

比較可以被任意鏈接;例如,X <ÿ< = z是等效於x < y和y < = Z ,不同之處在於y爲只計算一次 (但在這兩種情況下z爲不評估當x < y被發現是 在所有假)。

x < y <= z既不意味着(x < y) <= z也不x < (y <= z)x < y <= z相當於x < y and y <= z,並且從左到右進行評估。

邏輯AND不像C和C++那樣在Python中具有關聯性。這類算子的序列有單獨的規則,不能表示爲關聯性。

x < y and y <= z只有當第一個是因爲and是短路運算符計算第二個參數。

0

表達被評價爲:

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

所以,現在你明白爲什麼它是假的,因爲x不小於y