上一课我们吃透了 Python 核心数据类型,掌握了数据的存储与操作;而程序的核心能力,除了「存储数据」,更重要的是「判断条件」和「重复执行」—— 这就是本节课要学的流程控制。流程控制是 Python 编程的灵魂,能让程序摆脱「从上到下逐条执行」的呆板模式,根据不同条件做出不同决策、重复完成指定任务,是实现所有复杂功能的基础。掌握它,你就能写出真正具备「逻辑思维」的 Python 程序。

一、课程目标

✅ 掌握 if 条件判断:单分支、多分支、嵌套分支,实现程序的「判断能力」;✅ 掌握 while 循环、for 循环,实现程序的「重复执行能力」;✅ 掌握 breakcontinue 关键字,灵活控制循环执行流程;✅ 理解 range() 函数的核心用法,为循环提供数字序列;✅ 能综合运用流程控制 + 数据类型,完成实战项目开发;✅ 明确流程控制的使用场景,做到「何时用判断、何时用循环」。

二、复习回顾:流程控制的核心基础 —— 布尔值

流程控制的本质是「根据布尔值(True/False)决定代码执行路径」,上一课我们学过的布尔类型,是本节课所有知识的基石,快速回顾核心要点:

  1. 布尔类型只有两个值:True(真,满足条件)、False(假,不满足条件);
  2. 任意数据可自动转为布尔值:0 / 空值 / 空容器→False,非 0 / 非空→True;
  3. 后续所有「条件」最终都会被 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 中条件判断的核心关键字:ifelifelse,语法极简、可读性极强,完全贴合人类的自然语言逻辑。

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多分支、breakinput()、随机数生成。

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]

六、课后作业(基础 + 进阶,巩固必做)

✅ 基础作业(掌握核心用法)

  1. 编写程序:接收用户输入的「身高 (cm)」和「体重 (kg)」,计算 BMI 指数(BMI = 体重 ÷ 身高 ²,身高单位转米),并根据 BMI 判断体型:
    • BMI < 18.5 → 偏瘦;18.5 ≤ BMI <24 → 正常;BMI ≥24 → 偏胖;
  2. for循环 +range()实现:打印 1-100 之间所有的偶数;
  3. while循环实现:计算 100 以内所有奇数的和。

✅ 进阶作业(综合运用)

  1. 编写「九九乘法表」程序:用嵌套循环实现经典的九九乘法表输出(格式工整);
  2. 列表去重:给定列表 nums = [1,2,2,3,3,3,4,5,5],用循环 + 条件判断,生成一个无重复元素的新列表;
  3. 思考:for循环和while循环的使用场景有什么区别?什么时候用for、什么时候用while

七、后续学习指引

本节课我们掌握了 Python 的流程控制核心if条件判断让程序有了「判断力」,while/for循环让程序有了「重复执行能力」,这是 Python 编程的「逻辑基石」。👉 下一课我们将学习 Python 函数基础 —— 把重复使用的代码封装成「函数」,实现代码复用、简化程序结构,让你的代码从「零散片段」升级为「模块化程序」,是进阶开发的必经之路。

八、本节课核心总结

  1. 流程控制的核心:根据布尔值(True/False)决定代码执行路径,分为「条件判断」和「循环结构」两大类;
  2. 条件判断:单分支if、双分支if-else、多分支if-elif-else、嵌套 if,三元表达式简化简单判断;
  3. 循环结构while(条件循环,适合不确定次数)、for(遍历循环,开发首选),range()是 for 循环的核心搭档;
  4. 循环控制break终止整个循环,continue跳过本次循环,两者是循环的灵活操控手段;
  5. 核心原则:缩进是 Python 的语法规则,所有条件、循环的代码块必须缩进;代码块内可嵌套任意流程控制语句。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐