首页 > 编程笔记 > Python笔记 阅读:5

Python if分支语句的用法(附带实例,新手必看)

分支结构是指当程序执行到某步时,需根据实际情况选择性地执行某部分代码,就如同生活中的十字路口,需要根据具体情况选择走哪条路,每次只能选择一条路,不可能同时走多条路。

Python 中的分支结构可以分为三种:单分支、双分支以及多分支。

单分支(if语句)

if 语句只有 if 没有 else,只针对满足条件的情况进行一些额外操作,其执行流程如下图所示:


图 1 if语句执行流程

if 语句的语法格式为:
if 语句表达式:
    语句块
其中:

双分支(if-else语句)

if-else 语句是一种双选结构,如果表达式结果为 True 则执行语句块 1,否则执行语句块 2。

if-else 语句的执行流程如下图所示:


图 2 if-else语句执行流程

if-else 语句的语法格式为:
if 布尔表达式:
    语句块1
else:
    语句块2
其中:

多分支(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('未知姓氏')

相关文章