第 3 课:Python 流程控制精讲 —— 让程序拥有「判断」与「循环」能力
上一课我们吃透了 Python 核心数据类型,掌握了数据的存储与操作;而程序的核心能力,除了「存储数据」,更重要的是「判断条件」和「重复执行」—— 这就是本节课要学的流程控制。流程控制是 Python 编程的灵魂,能让程序摆脱「从上到下逐条执行」的呆板模式,根据不同条件做出不同决策、重复完成指定任务,是实现所有复杂功能的基础。掌握它,你就能写出真正具备「逻辑思维」的 Python 程序。
一、课程目标
✅ 掌握 if 条件判断:单分支、多分支、嵌套分支,实现程序的「判断能力」;✅ 掌握 while 循环、for 循环,实现程序的「重复执行能力」;✅ 掌握 break、continue 关键字,灵活控制循环执行流程;✅ 理解 range() 函数的核心用法,为循环提供数字序列;✅ 能综合运用流程控制 + 数据类型,完成实战项目开发;✅ 明确流程控制的使用场景,做到「何时用判断、何时用循环」。
二、复习回顾:流程控制的核心基础 —— 布尔值
流程控制的本质是「根据布尔值(True/False)决定代码执行路径」,上一课我们学过的布尔类型,是本节课所有知识的基石,快速回顾核心要点:
- 布尔类型只有两个值:
True(真,满足条件)、False(假,不满足条件); - 任意数据可自动转为布尔值:0 / 空值 / 空容器→False,非 0 / 非空→True;
- 后续所有「条件」最终都会被 Python 解析为「True」或「False」。
python
运行
# 复习:布尔值判断(条件判断的核心)
print(bool(0)) # False → 不满足条件
print(bool(90)) # True → 满足条件
print(bool([])) # False
print(bool("及格")) # True
print(100 > 60) # True → 比较运算的结果也是布尔值
三、核心知识点 1:条件判断(if)—— 给程序装上「大脑」
条件判断 用来实现「满足 XX 条件,就执行 XX 代码」的逻辑,是程序最基础的「决策能力」。Python 中条件判断的核心关键字:if、elif、else,语法极简、可读性极强,完全贴合人类的自然语言逻辑。
3.1 基础语法 1:单分支 if(满足条件才执行)
适用于「只有一种判断条件,满足就执行、不满足则跳过」的场景
✅ 语法格式
python
运行
if 条件表达式: # 条件表达式最终结果必须是True/False,末尾必须加冒号:
满足条件时执行的代码块 # 注意:代码块必须缩进(4个空格/Tab,Python核心语法!)
✅ 代码示例(成绩及格判断)
python
运行
# 单分支if案例:判断成绩是否及格
score = 85
if score >= 60:
print(f"成绩{score}分,及格啦!")
print("可以进入下一阶段学习~")
# 条件不满足时,代码块不会执行
score2 = 55
if score2 >= 60:
print(f"成绩{score2}分,及格啦!")
print("程序执行结束") # 这行不属于if代码块,无论条件是否满足都会执行
✅ 运行结果
plaintext
成绩85分,及格啦!
可以进入下一阶段学习~
程序执行结束
💡 关键注意:缩进是 Python 的语法规则,没有缩进会报错;缩进相同的代码属于同一个代码块。
3.2 基础语法 2:双分支 if-else(二选一执行)
适用于「两种互斥条件,满足执行 A、不满足执行 B」的场景,覆盖所有可能性。
✅ 语法格式
python
运行
if 条件表达式:
满足条件执行的代码块
else: # 无需写条件,匹配所有if不满足的情况,末尾加冒号:
不满足条件执行的代码块
✅ 代码示例(成绩及格 / 不及格判断)
python
运行
# 双分支if-else案例:二选一执行
score = 58
if score >= 60:
print(f"成绩{score}分 → 及格✅")
else:
print(f"成绩{score}分 → 不及格❌")
print("请重新复习,参加补考!")
✅ 运行结果
plaintext
成绩58分 → 不及格❌
请重新复习,参加补考!
3.3 基础语法 3:多分支 if-elif-else(多选一执行)
适用于「有 3 个及以上判断条件,按顺序匹配,满足其一即执行」的场景,是实际开发中最常用的条件判断方式。
✅ 语法格式
python
运行
if 条件1:
满足条件1执行的代码块
elif 条件2: # 可写多个elif,按需增加,末尾加冒号:
满足条件2执行的代码块
elif 条件3:
满足条件3执行的代码块
else: # 可选,匹配所有上述条件都不满足的情况
所有条件都不满足时执行的代码块
✅ 代码示例(成绩等级评定)
python
运行
# 多分支案例:成绩等级评定(90+优秀、80-89良好、60-79及格、60以下不及格)
score = 88
if score >= 90:
print(f"成绩{score}分 → 优秀🌟")
elif score >= 80:
print(f"成绩{score}分 → 良好👍")
elif score >= 60:
print(f"成绩{score}分 → 及格✅")
else:
print(f"成绩{score}分 → 不及格❌")
✅ 运行结果
plaintext
成绩88分 → 良好👍
💡 核心规则:条件按从上到下顺序匹配,只要匹配成功一个,就不再执行后续分支。
3.4 进阶用法:嵌套 if(条件里套条件)
适用于「需要先满足大条件,再判断小条件」的复杂场景,比如「先判断是否及格,及格后再判断是否优秀」。嵌套层级无限制,建议最多嵌套 3 层(层级过多代码可读性变差)。
✅ 代码示例(会员折扣计算)
python
运行
# 嵌套if案例:会员折扣计算(会员分普通/VIP,折扣不同;非会员无折扣)
is_member = True # 是否是会员
member_level = "VIP" # 会员等级
price = 1000 # 商品原价
if is_member:
print("会员享折扣~")
# 内层嵌套if:判断会员等级
if member_level == "VIP":
final_price = price * 0.8
print(f"VIP会员8折,最终价格:{final_price}元")
else:
final_price = price * 0.9
print(f"普通会员9折,最终价格:{final_price}元")
else:
print("非会员无折扣,最终价格:{}元".format(price))
✅ 运行结果
plaintext
会员享折扣~
VIP会员8折,最终价格:800.0元
3.5 拓展:三元表达式(简化 if-else)
对于「if-else 仅返回一个值」的简单场景,可使用三元表达式 简化代码,一行完成判断,是 Python 的「简洁写法」,开发中高频使用。
✅ 语法格式
python
运行
结果1 if 条件表达式 else 结果2 # 满足条件返回结果1,不满足返回结果2
✅ 代码示例(对比普通 if-else 和三元表达式)
python
运行
# 普通if-else写法
score = 75
if score >=60:
res = "及格"
else:
res = "不及格"
print(res)
# 三元表达式写法(一行搞定,等价于上面4行)
res2 = "及格" if score >=60 else "不及格"
print(res2)
✅ 运行结果
plaintext
及格
及格
四、核心知识点 2:循环结构 —— 让程序拥有「重复执行」能力
编程中大量场景需要「重复执行某段代码」:比如计算 1-100 的和、遍历列表所有元素、批量处理数据…… 如果手动写重复代码,效率极低且容易出错。Python 提供两种核心循环:while 循环、for 循环,满足所有重复执行需求。
4.1 while 循环 ——「条件满足,就一直循环」
while 循环的核心逻辑:只要条件表达式结果为 True,就持续执行循环体代码,直到条件变为 False 时停止,适合「不确定循环次数,靠条件终止」的场景。
✅ 基础语法
python
运行
while 条件表达式: # 条件为True则执行循环体,末尾加冒号:
重复执行的循环体代码块 # 必须缩进
# 可选:修改条件的代码(否则会陷入死循环)
✅ 示例 1:基础循环(1-5 累加求和)
python
运行
# while循环:计算1+2+3+4+5的和
sum_num = 0 # 存储求和结果
i = 1 # 循环计数器,初始值1
while i <= 5:
sum_num += i # 等价于 sum_num = sum_num + i
i += 1 # 计数器+1,否则条件永远为True,陷入死循环
print("1-5的和:", sum_num)
✅ 运行结果
plaintext
1-5的和: 15
✅ 示例 2:死循环与终止(重点)
如果while的条件永远为 True,会触发死循环(程序一直执行,永不停止),开发中需避免;若需主动终止循环,可搭配后续的break关键字,或在循环体内修改条件。
python
运行
# 死循环示例(Ctrl+C可强制终止程序)
# while True:
# print("我会一直执行...")
# 合理的循环:用条件控制终止
count = 0
while count < 3:
print(f"这是第{count+1}次循环")
count +=1
✅ 运行结果
plaintext
这是第1次循环
这是第2次循环
这是第3次循环
4.2 for 循环 ——「遍历容器,逐个执行」(开发首选)
for 循环是 Python最常用的循环,核心逻辑:遍历「可迭代对象」(字符串、列表、字典、元组等),逐个取出元素并执行循环体,适合「明确循环次数 / 遍历数据容器」的场景,比while更简洁、更安全。
✅ 基础语法
python
运行
for 变量名 in 可迭代对象: # 逐个取出可迭代对象的元素,赋值给变量,末尾加冒号:
重复执行的循环体代码块 # 必须缩进
✅ 示例 1:遍历字符串 / 列表 / 元组(基础用法)
python
运行
# 1. 遍历字符串(逐个取出字符)
str1 = "Python"
for char in str1:
print("当前字符:", char)
print("-" * 20)
# 2. 遍历列表(逐个取出元素)
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print("水果:", fruit)
✅ 运行结果
plaintext
当前字符: P
当前字符: y
当前字符: t
当前字符: h
当前字符: o
当前字符: n
--------------------
水果: 苹果
水果: 香蕉
水果: 橘子
✅ 示例 2:range () 函数 ——for 循环的「黄金搭档」(核心)
Python 内置的range()函数,能生成指定范围的数字序列,专门配合for循环实现「指定次数的循环」,是开发中最常用的组合,必须掌握!
✔️ range () 三种核心用法
python
运行
# 用法1:range(n) → 生成 0 ~ n-1 的整数序列(共n个数字)
for i in range(5):
print(i, end=" ") # end=" " 表示不换行输出
print("\n" + "-"*20)
# 用法2:range(a, b) → 生成 a ~ b-1 的整数序列(左闭右开)
for i in range(1, 6):
print(i, end=" ")
print("\n" + "-"*20)
# 用法3:range(a, b, step) → 生成 a ~ b-1 的序列,步长为step(间隔)
for i in range(1, 10, 2): # 1、3、5、7、9(步长2,奇数)
print(i, end=" ")
✅ 运行结果
plaintext
0 1 2 3 4
--------------------
1 2 3 4 5
--------------------
1 3 5 7 9
💡 高频场景:range() 实现「指定次数循环」,比如循环 10 次、循环 100 次,比while更简洁。
✅ 示例 3:遍历字典(for 循环进阶)
字典的遍历需结合keys()、values()、items()方法,分别遍历「键」、「值」、「键值对」,第二课已学,本课结合循环实战:
python
运行
# 遍历字典:学生信息
student = {"name": "张三", "age":20, "score":95}
# 1. 遍历所有key
print("遍历key:")
for key in student.keys():
print(key)
# 2. 遍历所有value
print("\n遍历value:")
for value in student.values():
print(value)
# 3. 遍历键值对(最常用)
print("\n遍历键值对:")
for k, v in student.items():
print(f"{k}:{v}")
✅ 运行结果
plaintext
遍历key:
name
age
score
遍历value:
张三
20
95
遍历键值对:
name:张三
age:20
score:95
4.3 循环控制关键字:break & continue(灵活操控循环)
在循环中,我们常常需要「提前终止循环」或「跳过本次循环」,Python 提供两个专属关键字,精准实现循环控制,是循环的「进阶必杀技」。
✅ 关键字 1:break → 强制终止整个循环
一旦执行break,循环立即结束,后续循环体代码和剩余循环次数都不再执行。
python
运行
# break示例:遍历1-10,遇到5就终止循环
for i in range(1, 11):
if i ==5:
break # 终止整个循环
print(f"当前数字:{i}")
print("循环结束")
✅ 运行结果
plaintext
当前数字:1
当前数字:2
当前数字:3
当前数字:4
循环结束
✅ 关键字 2:continue → 跳过本次循环,继续下一次
执行continue后,本次循环剩余代码不再执行,直接进入下一次循环判断。
python
运行
# continue示例:遍历1-10,跳过5,其余数字正常输出
for i in range(1, 11):
if i ==5:
continue # 跳过本次循环
print(f"当前数字:{i}")
print("循环结束")
✅ 运行结果
plaintext
当前数字:1
当前数字:2
当前数字:3
当前数字:4
当前数字:6
当前数字:7
当前数字:8
当前数字:9
当前数字:10
循环结束
💡 核心区别:break是「终止全部」,continue是「跳过单次」。
4.4 拓展:循环的 else 子句
Python 支持给while/for循环搭配else子句,当循环「正常结束」(未被 break 终止)时,会执行 else 里的代码块;若被 break 终止,else 不会执行。
python
运行
# 循环else示例:正常结束则执行else
for i in range(1,4):
print(f"循环次数:{i}")
else:
print("循环正常结束,执行else代码")
print("-"*20)
# 被break终止,else不执行
for i in range(1,4):
if i ==2:
break
print(f"循环次数:{i}")
else:
print("循环正常结束,执行else代码")
✅ 运行结果
plaintext
循环次数:1
循环次数:2
循环次数:3
循环正常结束,执行else代码
--------------------
循环次数:1
五、综合实操案例(2 个,整合前 3 课所有知识)
流程控制是「骨架」,数据类型是「血肉」,两者结合才能写出实用程序。以下两个案例覆盖输入输出、数据类型、条件判断、循环,是入门阶段的经典实战,建议逐行敲写、运行调试。
案例 1:猜数字小游戏(while+if+break)
✅ 需求:程序随机生成 1-10 的整数,用户输入数字猜答案,猜对则结束游戏,猜错提示「大了 / 小了」,可无限猜直到猜对。✅ 知识点:while循环、if多分支、break、input()、随机数生成。
python
运行
# 猜数字小游戏
import random # 导入随机数模块(Python内置,直接用)
print("=== 猜数字小游戏(1-10)===")
target_num = random.randint(1,10) # 生成1-10的随机整数
while True: # 无限循环,直到猜对break
# 接收用户输入并转换为整数
user_num = int(input("请输入你猜测的数字:"))
# 条件判断
if user_num == target_num:
print("恭喜你,猜对啦!🎉")
break # 终止循环,游戏结束
elif user_num > target_num:
print("猜大了,再试试~")
else:
print("猜小了,再试试~")
✅ 运行效果
plaintext
=== 猜数字小游戏(1-10)===
请输入你猜测的数字:5
猜小了,再试试~
请输入你猜测的数字:8
猜大了,再试试~
请输入你猜测的数字:7
恭喜你,猜对啦!🎉
案例 2:学生成绩管理系统(for+if + 列表)
✅ 需求:存储多个学生成绩,计算平均分、统计及格人数、输出不及格学生名单,整合列表、循环、条件判断的核心用法。✅ 知识点:列表存储、for循环、if判断、数值运算、格式化输出。
python
运行
# 学生成绩管理系统
print("=== 学生成绩管理系统 ===")
# 1. 存储学生成绩(列表)
scores = [85, 59, 92, 78, 65, 48, 98]
# 2. 初始化统计变量
sum_score = 0 # 总分
pass_count = 0 # 及格人数
fail_list = [] # 不及格成绩列表
# 3. 遍历成绩,统计数据
for score in scores:
sum_score += score # 累加总分
if score >=60:
pass_count +=1 # 及格人数+1
else:
fail_list.append(score) # 不及格成绩加入列表
# 4. 计算平均分
avg_score = sum_score / len(scores)
# 5. 输出统计结果
print(f"全班总分:{sum_score},平均分:{avg_score:.1f}") # .1f 保留1位小数
print(f"及格人数:{pass_count},不及格人数:{len(fail_list)}")
print(f"不及格成绩名单:{fail_list}")
✅ 运行结果
plaintext
=== 学生成绩管理系统 ===
全班总分:525,平均分:75.0
及格人数:5,不及格人数:2
不及格成绩名单:[59, 48]
六、课后作业(基础 + 进阶,巩固必做)
✅ 基础作业(掌握核心用法)
- 编写程序:接收用户输入的「身高 (cm)」和「体重 (kg)」,计算 BMI 指数(BMI = 体重 ÷ 身高 ²,身高单位转米),并根据 BMI 判断体型:
- BMI < 18.5 → 偏瘦;18.5 ≤ BMI <24 → 正常;BMI ≥24 → 偏胖;
- 用
for循环 +range()实现:打印 1-100 之间所有的偶数; - 用
while循环实现:计算 100 以内所有奇数的和。
✅ 进阶作业(综合运用)
- 编写「九九乘法表」程序:用嵌套循环实现经典的九九乘法表输出(格式工整);
- 列表去重:给定列表
nums = [1,2,2,3,3,3,4,5,5],用循环 + 条件判断,生成一个无重复元素的新列表; - 思考:
for循环和while循环的使用场景有什么区别?什么时候用for、什么时候用while?
七、后续学习指引
本节课我们掌握了 Python 的流程控制核心:if条件判断让程序有了「判断力」,while/for循环让程序有了「重复执行能力」,这是 Python 编程的「逻辑基石」。👉 下一课我们将学习 Python 函数基础 —— 把重复使用的代码封装成「函数」,实现代码复用、简化程序结构,让你的代码从「零散片段」升级为「模块化程序」,是进阶开发的必经之路。
八、本节课核心总结
- 流程控制的核心:根据布尔值(True/False)决定代码执行路径,分为「条件判断」和「循环结构」两大类;
- 条件判断:单分支
if、双分支if-else、多分支if-elif-else、嵌套 if,三元表达式简化简单判断; - 循环结构:
while(条件循环,适合不确定次数)、for(遍历循环,开发首选),range()是 for 循环的核心搭档; - 循环控制:
break终止整个循环,continue跳过本次循环,两者是循环的灵活操控手段; - 核心原则:缩进是 Python 的语法规则,所有条件、循环的代码块必须缩进;代码块内可嵌套任意流程控制语句。
更多推荐
所有评论(0)