在 Python 中,选择结构指的是根据 “条件判断” 来决定执行哪一段代码。选择结构有单向选择、双向选择以及多向选择,但不管是哪一种,Python 都只会执行其中的一个分支。
Python if 语句
在 Python 中,单向选择使用的是 if 语句,其流程如下图所示。

语法:
if 条件:
……说明:
这里的 “条件” 一般是一个比较表达式。如果 “条件” 返回为 True,则会执行冒号下面缩进的代码块;如果 “条件” 返回为 False,则会直接跳过冒号下面缩进的代码块。然后按照顺序来执行后面的程序。
示例 1:使用 if 语句
score = input('请输入分数:')
score = int(score)
if score > 60:
print('通过!')
print('考试结束!')运行之后,我们输入 “90”,此时结果如下:
通过!
考试结束!分析:
由于变量 score 的值为 90,所以 score > 60 返回 True,因此会执行冒号下面缩进的代码块。重新运行上面的代码,如果输入的是 “50”,此时运行结果如下。
考试结束!由于 50 > 60 返回 False,因此 Python 会跳过冒号下面缩进的代码,直接跳到最后一个 print() 函数。最后需要注意的是,上面的示例中的 print('通过!') 属于 if 语句,但 print('考试结束!') 并不属于。
Python 中的 “缩进”
Python 是使用 “缩进” 的方式来告诉计算机这个代码块属于哪一个 if、else 或 while,这一点跟 C、C++ 等语言使用大括号 “{}” 的方式不一样。对于缩进,一般是缩进 4 个空格或者一个 Tab 键。
Python if...else 语句
在 Python 中,双向选择使用的是 if...else 语句,其流程如下图所示。

语法:
if 条件:
……
else:
……说明:
if...else 相对 if 来说,仅仅是多了一个选择。当条件返回为 True 时,会执行 if 后面缩进的代码块;当条件返回为 False 时,会执行 else 后面缩进的代码块。
示例 2:使用 if...else 语句
score = input('请输入分数:')
score = int(score)
if score < 60:
print('补考!')
else:
print('通过!')运行之后,我们输入 “90”,此时结果如下:
通过!由于变量 score 的值为 90,而 score < 60 返回 False,此时执行的就不是 if 代码块,而是 else 代码块了。
Python if...elif...else 语句
Python 中的多向选择,指的是在双向选择的基础上增加多个选择分支。
语法:
if 条件 1:
# 当条件 1 为 True 时执行的代码
elif 条件 2:
# 当条件 2 为 True 时执行的代码
else:
# 当条件 1 和条件 2 都为 False 时执行的代码说明:
多向选择语法看似复杂,其实它只是在双向选择基础上增加一个或多个选择分支罢了。对比一下两者的语法格式,你就知道了。其中,elif 指的是 “else if”,表示带有条件的 else 子句。
示例 3:使用 if...elif...else 语句
time = 20
if time < 12:
print('早上好!')
elif time >= 12 and time < 18:
print('下午好!')
else:
print('晚上好!')运行结果如下。
晚上好!分析:
对于多向选择,Python 会从第一个 if 开始判断,如果第一个 if 条件不满足,则判断第二个 if 条件……直到满足为止。一旦满足,就会退出整个 if 结构。
这里再告诉你好用的技巧,对于连续范围的判断,还可以对其进行简写。比如 time >= 12 and time < 18 可以简写为:12 <= time < 18,去试试吧。
技巧: 比较运算符可以连续使用,其效果与使用 and 连接多个表达式的效果相同,比如 x < y < z 相当于 x < y and y < z、x == y == z 相当于 x == y and y == z。
Python if 语句的嵌套
在 Python 中,if 语句是可以嵌套使用的,也就是 if 语句的内部还可以定义 if 语句。
语法:
if 条件 1:
if 条件 2:
# 当 “条件1” 和 “条件2” 都为 True 时执行的代码
else:
# 当 “条件1” 为 True、“条件2” 为 False 时执行的代码
else:
if 条件 2:
# 当 “条件1” 为 False、“条件2” 为 True 时执行的代码
else:
# 当 “条件1” 和 “条件2” 都为 False 时执行的代码说明:
对于 if 语句的嵌套,我们只需要从外到内根据条件一个个去判断,就像剥洋葱一样简单(如下图所示)。Python 是用 “缩进” 的方式来表示哪一个代码块属于哪一个 if 或 else 的,所以我们可以根据缩进来判断哪两个 if 和 else 是一对的。

示例 4:if 语句的嵌套实现 “公交车检票”
ticket = 1
seat = 0
if ticket:
if seat:
print('上车,请坐!')
else:
print('上车,站着!')
else:
print('请等候下一班车!')运行结果如下。
上车,站着!示例 5:判断 x 和 y 的大小
x = 12
y = 8
if x < 10:
if y < 10:
print('x 小于 10, y 小于 10')
else:
print('x 小于 10, y 大于或等于 10')
else:
if y < 10:
print('x 大于 10, y 小于 10')
else:
print('x 大于 10, y 大于或等于 10')运行结果如下。
x 大于 10, y 小于 10分析:
对于 if 语句,还有以下 2 点需要特别说明一下。
- Python 中 if 后面表达式的小括号可加可不加。
- Python 使用的是 elif,而不是 else if。
Python 的代码格式
Python 每条语句末尾不需要加分号,也不使用大括号 “{}” 来实现代码块的包裹,这些其实都是考虑到一点:在大型项目的开发中,问题往往都是由一些小细节导致的,例如多了一个分号,或者少了一个大括号等。
因此,Python 舍弃这些方式,而使用更为简洁的方式,这也体现了 Python 本身 “美与哲学” 的特点。
