Python if分支语句的用法(附带实例,新手必看)
分支结构是指当程序执行到某步时,需根据实际情况选择性地执行某部分代码,就如同生活中的十字路口,需要根据具体情况选择走哪条路,每次只能选择一条路,不可能同时走多条路。
Python 中的分支结构可以分为三种:单分支、双分支以及多分支。

图 1 if语句执行流程
if 语句的语法格式为:
if-else 语句的执行流程如下图所示:

图 2 if-else语句执行流程
if-else 语句的语法格式为:
if-elif-else 语句的备选操作较多,但是有且只有一组操作被执行,其执行流程如下图所示:

图 3 if-elif-else 语句执行流程
if-elif-else 语句的语法格式为:
【实例】演示数字猜谜游戏。
match-case 语法格式如下:
case_ 类似于 C 和 Java 中的 default,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。
【实例】对比 if-elif-else 和 match-case 语句。
Python 中的分支结构可以分为三种:单分支、双分支以及多分支。
单分支(if语句)
if 语句只有 if 没有 else,只针对满足条件的情况进行一些额外操作,其执行流程如下图所示:
图 1 if语句执行流程
if 语句的语法格式为:
if 语句表达式: 语句块其中:
- 语句块只有当表达式的值为 True 时才会执行;否则,程序就会直接跳过这个语句块,去执行紧跟在这个语句块之后的语句。
- 这里的语句块,既可以包含多条语句,也可以只有一条语句。当语句块由多条语句组成时,要有统一的缩进形式,否则就会出现逻辑错误,即语法检查没错,但是结果却非预期。
双分支(if-else语句)
if-else 语句是一种双选结构,如果表达式结果为 True 则执行语句块 1,否则执行语句块 2。if-else 语句的执行流程如下图所示:

图 2 if-else语句执行流程
if-else 语句的语法格式为:
if 布尔表达式: 语句块1 else: 语句块2其中:
- else 语句不能独立存在。
- else 语句的缩进与它所对应的 if 语句缩进相同。
多分支(if-elif-else语句)
如果需要在多组操作中选择一组执行,就会用到多选结构,即 if-elif-else 语句。该语句利用一系列布尔表达式进行检查,并在某个表达式为 True 的情况下执行相应的代码。if-elif-else 语句的备选操作较多,但是有且只有一组操作被执行,其执行流程如下图所示:

图 3 if-elif-else 语句执行流程
if-elif-else 语句的语法格式为:
if 条件表达式1: 语句体1 elif 条件表达式2: 语句体2 … elif 条件表达式n: 语句体n else: 语句体n + 1
【实例】演示数字猜谜游戏。
number = 7 guess = -1 print("数字猜谜游戏!") while guess! = number: guess = int(input("请输入你猜的数字:")) if guess = = number: print("恭喜,你猜对了!") elif guess<number: print("猜的数字小了...") elif guess>number: print("猜的数字大了...")运行程序,输出如下:
数字猜谜游戏!
请输入你猜的数字:8
猜的数字大了...
请输入你猜的数字:5
猜的数字小了...
请输入你猜的数字:6
猜的数字小了...
请输入你猜的数字:7
恭喜,你猜对了!
Python match-case语句
Python 3.10 增加了 match-case 的条件判断,不需要再使用一连串的 if-else 来判断了。match-case 语法格式如下:
match subject: case<pattern_1>: <action_1> case<pattern_2>: <action_2> case<pattern_3>: <action_3> case_: <action_wildcard>match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,“_”可以匹配一切。
case_ 类似于 C 和 Java 中的 default,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。
【实例】对比 if-elif-else 和 match-case 语句。
# if-elif-else 语句 names = ['zhao', 'qian', 'sun', 'slslsls'] for name in names: if name == 'zhao': print('张') elif name == 'qian': print('陈') elif name == 'sun': print('赵') else: print('未知姓氏') # match-case 语句 for name in names: match name: # match 后面跟要匹配的对象 case 'zhao': # 一旦某个 case 匹配上了,不会继续执行下面的其他 case print('张') case 'qian': print('陈') case 'sun': print('赵') case _: # 捕获其他未涵盖的情况 print('未知姓氏')