Python if 语句辨析

Python if statement confusing me

本问题已经有最佳答案,请猛点这里访问。

运行python v3.6.5 pycharm我有一个简单的for循环,其中包含if和else语句:

1
2
3
4
5
for i in range(10):
    if i > 3 < 5:
        print(i,"first")
    else:
        print(i,"second")

我得到的输出是:

1
2
3
4
5
6
7
8
9
10
0 second
1 second
2 second
3 second
4 first
5 first
6 first
7 first
8 first
9 first

但输出不应该是:

1
2
3
4
5
6
7
8
9
10
0 second
1 second
2 second
3 second
4 first
5 second
6 second
7 second
8 second
9 second

你自己试试。这对我来说没有意义。为什么要这样做?

不需要知道

我知道你可能在想,你为什么不直接说

1
if i == 4

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

提前谢谢

雨果


i > 3 < 5这样的一系列运算符被解释为

1
i > 3 and 3 < 5

其中"中间"操作数对左、右运算符重复。你想要

1
3 < i and i < 5

可缩写为3 < i < 5


正确的语法是:

1
if 3 < i < 5:

请注意,python在这里是特殊的,而且这个构造在大多数其他语言中都不起作用(在这里您必须说一些类似于3 < i and i < 5)。