Python if语句让我感到困惑

Hug*_*ugs 0 python python-3.x

运行python v3.6.5 PyCharm

我有一个简单的for循环,带有if和else语句:

for i in range(10):
    if i > 3 < 5:
        print(i, "first")
    else:
        print(i, "second")
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

0 second
1 second
2 second
3 second
4 first
5 first
6 first
7 first
8 first
9 first
Run Code Online (Sandbox Code Playgroud)

但输出不应该是:

0 second
1 second
2 second
3 second
4 first
5 second
6 second
7 second
8 second
9 second
Run Code Online (Sandbox Code Playgroud)

亲自尝试一下.这对我来说没有意义.它为什么这样做?

真的不需要知道

我知道你可能会想,你为什么不这么说

if i == 4
Run Code Online (Sandbox Code Playgroud)

但这只是我程序中的一个简化问题.

提前致谢

雨果

che*_*ner 7

一系列运营商i > 3 < 5被解释为

i > 3 and 3 < 5
Run Code Online (Sandbox Code Playgroud)

其中"中间"操作数对于左右操作符重复.你要

3 < i and i < 5
Run Code Online (Sandbox Code Playgroud)

,可以缩写(使用前面解释的反向)作为3 < i < 5.


Tho*_*mas 6

正确的语法是:

if 3 < i < 5:
Run Code Online (Sandbox Code Playgroud)

请注意,Python在这里很特别,而且这种结构在大多数其他语言中都不起作用(在这里你不得不说出类似的东西3 < i and i < 5).