2017-04-07 6 views
2

저는 파이썬에서 초보자입니다. 나는 세 개의 변수 x, y, zint으로 가지고 있습니다. 나는 if 상태에서 비교 세 변수가 있습니다. 나는 코드 결과에 대해 혼란스러워한다.파이썬에서 x <y <= z에 관한 혼동

x < y <= z은 false로 평가됩니다.

x = 10, y = 5z = 0이라고 가정합시다. x < y이된다면이되고, False <= 0이된다.이된다. 이지만 출력은 거짓입니다. 왜?

내 파이썬 스크립트 :

#!/usr/bin/python 

x = 10 
y = 5 
z = 0 

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

'의 X이기 때문이다

+0

다른 언어와 다른 동작. – trincot

+0

@ trunkot : Rust와 Coffeescript는 같은 개념을 지원합니다. –

답변

2

document 말 :

비교 임의로 체인 될 수있다; 그 예는 평가 제외 < = Z는, X < Y 및 Y < = Z로 상당 Y 예컨대 <을 X 번만 (단, z는 모두 Y는 것으로 확인되면 X < 평가되지 않는 두 경우에서 그릇된).

x < y <= z도는 (x < y) <= zx < (y <= z) 의미한다. x < y <= zx < y and y <= z과 같으며 왼쪽에서 오른쪽으로 평가됩니다.

논리적 AND은 C 및 C++과 달리 Python에서 연관성이 없습니다. 이러한 종류의 연산자의 시퀀스에는 별도의 규칙이 있으며 결합으로 표현할 수 없습니다. and가 단락 연산자이기 때문에 첫 번째는 사실 경우

x < y and y <= z 만 번째 인자를 평가한다.

0

는 식으로 평가하는지 : 그래서 지금은 거짓 왜 당신이 볼

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

x가 이하 y 이상

관련 문제