Python 基础篇(六):第六章:条件循环分支
Python 基础篇(六):第六章:条件循环分支
Prorise第六章. 条件判断与循环:让程序做决策
在前面的章节中,我们学习了变量、数据类型、运算符和数据容器。但到目前为止,我们的程序都是"一条路走到黑",从第一行执行到最后一行,没有任何分支和重复。
真实的程序需要根据不同情况做出不同反应,也需要重复执行某些操作。这一章,我们将学习条件判断和循环,让程序变得智能。
6.1. 条件判断:if/elif/else
6.1.1. 为什么需要条件判断?
假设你要写一个程序,判断学生的成绩是否及格。如果没有条件判断,你只能这样写:
1 | score = 85 |
但这样有个问题:无论成绩是多少,都会输出"成绩及格"。我们需要让程序根据成绩的不同,输出不同的结果。
条件判断可以解决这个问题:
1 | score = 85 |
现在,程序会根据 score 的值,自动选择输出哪一句话。
6.1.2. if 语句的基础用法
if 语句的语法很简单:
1 | if 条件: |
关键点:
if后面跟一个条件表达式,结果必须是True或False- 条件后面必须有冒号
: - 执行的代码必须缩进(通常是 4 个空格)
1 | age = 20 |
如果条件为 False,缩进的代码不会执行:
1 | age = 16 |
6.1.3. if-else:二选一
if-else 用于"二选一"的场景:
1 | score = 55 |
执行逻辑:
- 如果条件为
True,执行if下的代码 - 如果条件为
False,执行else下的代码
6.1.4. if-elif-else:多选一
当有多个条件需要判断时,使用 if-elif-else:
1 | score = 85 |
执行逻辑:
- 从上到下依次判断条件
- 一旦某个条件为
True,执行对应的代码,然后跳出整个if语句 - 如果所有条件都为
False,执行else下的代码
6.1.5. 嵌套的 if 语句
if 语句可以嵌套:
1 | age = 20 |
但嵌套太多会让代码难以阅读,可以用逻辑运算符简化:
1 | age = 20 |
6.1.6. 链式比较:Python 的优雅写法
Python 支持数学风格的链式比较:
1 | score = 85 |
链式比较更简洁、更符合数学习惯。
6.1.7. 条件判断的常见错误与避坑指南
错误 1:忘记冒号
1 | # ❌ 错误 |
错误 2:缩进错误
1 | # ❌ 错误:缩进不一致 |
错误 3:使用赋值运算符 = 而不是比较运算符 ==
1 | # ❌ 错误 |
6.2. 用户输入:input() 函数
6.2.1. 为什么需要用户输入?
到目前为止,我们的程序中的数据都是"写死"的。如果要改变数据,必须修改代码。这显然不现实。
input() 函数可以让程序在运行时接收用户输入的数据。
6.2.2. input() 的基础用法
1 | name = input("请输入你的姓名:") |
执行流程:
- 程序显示提示信息"请输入你的姓名:"
- 等待用户输入
- 用户按回车后,输入的内容被赋值给
name
6.2.3. input() 返回的是字符串
重要:input() 返回的永远是字符串,即使用户输入的是数字。
1 | age = input("请输入你的年龄:") |
如果要进行数值运算,必须先转换类型:
1 | age = input("请输入你的年龄:") |
6.2.4. 类型转换与输入验证
1 | # 转换为整数 |
常见错误:用户输入非数字时,程序会崩溃:
1 | age = int(input("请输入你的年龄:")) |
我们会在后续章节学习如何处理这种错误(异常处理)。
6.3. for 循环:遍历容器
6.3.1. 为什么需要循环?
假设你要打印列表中的所有元素:
1 | scores = [90, 85, 92, 88, 95] |
如果列表有 100 个元素呢?显然不能这样写。循环可以解决这个问题。
6.3.2. for 循环的基础用法
1 | scores = [90, 85, 92, 88, 95] |
执行流程:
- 从
scores中取出第一个元素90,赋值给score - 执行循环体中的代码
- 取出第二个元素
85,赋值给score - 重复,直到所有元素都处理完
6.3.3. range() 函数:生成数字序列
range() 可以生成一个数字序列:
1 | # 打印 0 到 4 |
6.3.4. 遍历列表、元组、字典、集合
1 | # 遍历列表 |
6.3.5. enumerate():同时获取索引和值
1 | fruits = ["apple", "banana", "cherry"] |
6.3.6. zip():并行遍历多个容器
1 | names = ["张三", "李四", "王五"] |
6.4. while 循环:条件循环
6.4.1. for vs while:何时用哪个?
for循环:知道循环次数或需要遍历容器while循环:不知道循环次数,只知道退出条件
6.4.2. while 循环的基础用法
1 | count = 0 |
6.4.3. while True:常见的循环模式
1 | while True: |
6.5. break 和 continue:控制循环流程
6.5.1. break:提前退出循环
1 | for i in range(10): |
6.5.2. continue:跳过本次循环
1 | for i in range(5): |
6.6. 模式匹配:match/case(Python 3.10+)
6.6.1. 为什么需要模式匹配?
当有多个条件需要判断时,if-elif-else 会变得冗长:
1 | status = "success" |
match-case 可以让代码更简洁:
1 | status = "success" |
6.6.2. 匹配多个值
1 | day = "Saturday" |
6.6.3. 守卫条件:if 子句
1 | score = 85 |
6.7. 综合实战:猜数字游戏
1 | import random |
6.8. 本章小结
本章学习了条件判断和循环,让程序能够根据不同情况做出不同反应。
| 知识点 | 使用场景 | 关键语法 |
|---|---|---|
| if/elif/else | 条件判断 | if 条件: |
| for 循环 | 遍历容器 | for item in container: |
| while 循环 | 条件循环 | while 条件: |
| break | 提前退出循环 | break |
| continue | 跳过本次循环 | continue |
| match/case | 模式匹配 | match 变量: |




