04. 程序的控制结构
分支结构
单分支结构
1 | if <条件>: |
二分支结构
1 | if <条件>: |
紧凑形式:适用于简单表达式的二分支结构(注意: 表达式不同于语句, 算是语句的一部分)
<表达式1> if <条件> else <表达式2>
例如
1 | guess = eval(input()) |
多分支结构
1 | if <条件1>: |
注意多条件之间的包含关系
反例:

Structural Pattern Matching(结构模式匹配)
Python 3.10 起正式引入了 match … case 结构。它并不是 if/elif 的简单语法糖,而是可以按模式(字面量、类型、长度、属性、捕获变量等)做多路分支。
1 | match value: |
要点速览
- 关键字:
match开头,case分支,可带if守卫。 - 模式种类:字面量、通配符
_、捕获变量、序列、映射、类名、嵌套模式、OR 模式|。 - 无隐式落空:只要命中一条就退出,不会继续往下执行(不用写
break)。 - 必须有兜底:若前面的
case都可能错过,最后加case _避免RuntimeError。 - 性能:底层跳转表 + 快速匹配算法,分支很多时比长串
if/elif更清晰也更高效。
程序的循环结构
遍历循环(for 语句)
- 核心语义:“按顺序逐个取元素,直到可迭代对象耗尽”
- 语法
1
2
3
4for 变量 in 可迭代对象:
循环体
[else: # 可选,仅当循环没有被 break 中断时执行
收尾语句]
可迭代对象:字符串、列表、元组、字典、集合、range、生成器、文件句柄等。
无限循环
- 核心语义:“只要条件为真就反复执行”
- 语法
1
2
3
4while 条件表达式:
循环体
[else: # 可选,仅当条件首次为假且未被 break 中断时执行
收尾语句]
- 典型用法
- 不确定迭代次数:用户输入验证、网络重试、事件监听
- 显式退出:内部用 break 跳出;或用 return 直接结束函数
循环控制保留字
| 关键字 | 作用域 | 说明 |
|---|---|---|
break |
最内层循环 | 立即跳出整个循环,else 也不执行 |
continue |
最内层循环 | 跳过本轮剩余语句,直接下一轮迭代 |
pass |
任意位置 | 空操作,占位保持语法完整 |
快速对比
| 特征 | for | while |
|---|---|---|
| 迭代次数 | 通常已知 | 通常未知 |
| 自动终止 | 可迭代对象耗尽即停 | 需手动变更条件或 break |
| 代码可读性 | 高(语义清晰) | 条件复杂时易出错 |
| 性能 | 遍历 C 级迭代器,快 | 纯 Python 条件判断,稍慢 |
range() 函数


异常处理
基本框架
1 | try: |
执行顺序口诀
“先 try,有异常就 except,无异常就 else,最后永远 finally。”
捕获多个异常:except (FileNotFoundError, ValueError) as e:
手动抛出异常:raise Exception(‘xxx’)
继续向上传播:raise
易错提醒
- 不要写裸 except:
→ 会连 KeyboardInterrupt、SystemExit也捕获;用except Exception:或具体类型。 - else 与 finally 可同时出现,顺序必须是 try → except → else → finally。
- 如果 finally 里 return,它会覆盖前面 try/except/else 的返回值或异常,慎用!
random 库的使用
random 库是使用随机数的 Python 标准库
- 伪随机数: 采用梅森旋转算法生成的(伪)随机序列中元素
- random 库主要用于生成随机数
- 使用 random 库

扩展随机数函数



随机数函数的使用
- 能够利用随机数种子产生"确定"伪随机数
- 能够产生随机整数
- 能够对序列类型进行随机操作