【Python学习】流程控制
目录
4.2.4 实例演示3:使用range()函数(指定循环次数)

一、前言:什么是流程控制?
在编程中,流程控制指的是通过特定语句,控制程序代码的执行顺序。默认情况下,Python程序会按照代码的书写顺序“自上而下、逐行执行”,这就是最基础的“顺序结构”。但实际开发中,我们往往需要根据不同条件执行不同代码(分支结构),或重复执行某段代码(循环结构),这两类就是流程控制的核心内容。
流程控制是Python编程的基础,也是实现复杂逻辑的核心,掌握它能让你的代码从“简单的逐行执行”升级为“有判断、有重复的智能逻辑”,适用于所有Python开发场景(如数据分析、自动化、Web开发等)。本教程将从基础到进阶,结合实例讲解所有核心知识点,兼顾入门理解和实战应用。
二、基础流程结构:顺序结构
2.1 核心定义
顺序结构是最基础、最默认的流程结构,代码按照“从上到下、从左到右”的顺序依次执行,没有判断、没有跳转,每一行代码都会被执行一次。
2.2 实例演示
以下代码就是典型的顺序结构,执行顺序为:先打印提示语,再接收用户输入,最后打印结果,步骤固定且无跳转。
# 顺序结构实例:接收用户输入并打印信息 print("欢迎进入Python流程控制学习!") # 第一步:打印提示 name = input("请输入你的名字:") # 第二步:接收用户输入 age = int(input("请输入你的年龄:")) # 第三步:接收年龄并转换为整数 print(f"你好,{name}!你今年{age}岁,开始学习流程控制吧~") # 第四步:打印结果
2.3 注意事项
-
顺序结构中,代码的执行顺序完全依赖书写顺序,修改代码顺序会改变程序运行结果。
-
若某一行代码出现错误(如语法错误、类型错误),程序会在该行终止,后续代码不再执行。
三、分支结构:根据条件执行不同代码
分支结构的核心是“判断条件”:当条件满足时,执行某一段代码;条件不满足时,执行另一段代码(或不执行)。Python中分支结构主要通过 if、if-else、if-elif-else 三种语句实现。
3.1 单分支:if语句
3.1.1 语法格式
if 条件表达式: 缩进的代码块 # 条件为True时,执行这里的代码 # 缩进结束后,代码回归正常顺序执行
关键说明:
-
条件表达式:结果必须是布尔值(True/False),可以是比较运算(如 >、<、==)、逻辑运算(and、or、not)等。
-
缩进:Python通过缩进(通常是4个空格,或1个Tab)区分代码块,缩进的代码属于if的“管辖范围”,这是Python的语法特点,缩进错误会导致程序报错。
3.1.2 实例演示
需求:判断一个数是否为正数,若是则打印提示。
# 单分支if语句实例 num = 15 if num > 0: print(f"{num}是正数") # 条件num>0为True,执行该语句 print("程序结束") # 不受if影响,一定会执行
运行结果: 15是正数 程序结束
3.1.3 易错点
忘记缩进:if条件后加冒号(:),后续代码必须缩进,否则会报语法错误;缩进不一致(如混合使用空格和Tab)也会报错。
3.2 双分支:if-else语句
3.2.1 语法格式
if 条件表达式: 条件为True时执行的代码块 else: 条件为False时执行的代码块 # 二选一,必执行一个
核心特点:if和else是“互斥”的,条件满足则执行if里的代码,不满足则执行else里的代码,不会同时执行,也不会都不执行。
3.2.2 实例演示
需求:判断一个数是正数还是非正数,打印对应提示。
# 双分支if-else语句实例 num = -3 if num > 0: print(f"{num}是正数") else: print(f"{num}是非正数(负数或0)") # 条件num>0为False,执行该语句
运行结果:-3是非正数(负数或0)
3.3 多分支:if-elif-else语句
3.3.1 语法格式
if 条件1: 条件1为True时执行的代码块 elif 条件2: 条件1为False、条件2为True时执行的代码块 elif 条件3: 条件1、2均为False、条件3为True时执行的代码块 ... # 可添加多个elif else: 所有条件均为False时执行的代码块 # 可选,可省略
核心特点:
-
elif是“else if”的缩写,用于多条件判断,自上而下依次判断,只要有一个条件满足,就执行对应代码块,后续条件不再判断。
-
else是可选的,若所有条件都不满足,且没有else,那么多分支结构不会执行任何代码。
3.3.2 实例演示
需求:根据分数判断成绩等级(90分及以上为优秀,80-89为良好,70-79为中等,60-69为及格,60以下为不及格)。
# 多分支if-elif-else语句实例 score = 85 if score >= 90: print("成绩等级:优秀") elif score >= 80: print("成绩等级:良好") # 85≥80为True,执行该语句,后续条件不再判断 elif score >= 70: print("成绩等级:中等") elif score >= 60: print("成绩等级:及格") else: print("成绩等级:不及格")
运行结果:成绩等级:良好
3.3.3 易错点
-
条件顺序错误:多分支中,条件的先后顺序很重要,必须从“严格”到“宽松”。例如,若先写
if score >= 60,那么所有≥60的分数都会被判断为“及格”,后续的80、90分条件不会执行。 -
elif不能单独使用:elif必须跟在if后面,不能直接写elif,否则会报语法错误。
3.4 分支嵌套
分支嵌套指的是“在一个分支代码块中,再嵌套另一个分支结构”,用于处理更复杂的多条件判断。
3.4.1 实例演示
需求:判断一个数是否为正数,若是,再判断它是否为偶数。
# 分支嵌套实例 num = 12 if num > 0: print(f"{num}是正数") # 嵌套if语句,判断是否为偶数 if num % 2 == 0: print(f"{num}是偶数") else: print(f"{num}是奇数") else: print(f"{num}是非正数")
运行结果: 12是正数 12是偶数
3.4.2 注意事项
嵌套时,缩进要层次分明,避免多缩进或少缩进,否则会导致代码逻辑混乱(比如把嵌套的if写在外部if的同一缩进,变成两个独立的分支)。
四、循环结构:重复执行指定代码
循环结构的核心是“重复”:当满足指定条件时,反复执行某一段代码(循环体),直到条件不满足时停止。Python中循环结构主要有两种:while 循环和 for 循环,两者适用场景不同,互补使用。
4.1 while循环:条件满足就循环
4.1.1 语法格式
while 条件表达式: 缩进的循环体 # 条件为True时,重复执行该代码块 (可选)更新条件的代码 # 避免无限循环
核心逻辑:先判断条件表达式,若为True,执行循环体;执行完循环体后,再次判断条件,直到条件为False,循环终止,继续执行循环后面的代码。
4.1.2 实例演示1:基础循环
需求:打印1-5的数字,重复5次。
# while循环基础实例 i = 1 # 初始化变量(循环计数器) while i <= 5: # 条件:i小于等于5时循环 print(i) # 循环体:打印i i += 1 # 更新条件:i自增1,避免无限循环 print("循环结束")
运行结果: 1 2 3 4 5 循环结束
4.1.3 实例演示2:无限循环(可控终止)
若条件表达式永远为True,循环会一直执行(无限循环),通常结合 break 语句手动终止循环,适用于“不确定循环次数”的场景(如用户输入指令,直到输入“退出”才停止)。
# 无限循环+break终止实例 print("请输入指令(输入'退出'结束程序):") while True: # 条件永远为True,无限循环 command = input("请输入:") if command == "退出": print("程序已退出") break # 终止循环,跳出while else: print(f"你输入的指令是:{command}")
4.1.4 易错点:无限循环
忘记更新条件变量(如实例1中忘记写 i += 1),会导致条件永远为True,循环无限执行,此时需要手动终止程序(如Ctrl+C)。
4.2 for循环:遍历可迭代对象
for循环适用于“已知循环次数”或“遍历可迭代对象”的场景(如遍历列表、字符串、字典等),无需手动维护循环计数器,语法更简洁。
4.2.1 语法格式
for 变量名 in 可迭代对象: 缩进的循环体 # 遍历可迭代对象的每一个元素,执行一次循环体 # 可迭代对象:能依次取出元素的对象,如列表、字符串、range()等
4.2.2 实例演示1:遍历字符串
需求:遍历字符串“Python”,逐个打印每个字符。
# for循环遍历字符串 s = "Python" for char in s: print(char) # 依次取出s中的每个字符,打印
运行结果: P y t h o n
4.2.3 实例演示2:遍历列表
需求:遍历列表中的水果,打印每个水果的名称。
# for循环遍历列表 fruits = ["苹果", "香蕉", "橙子", "葡萄"] for fruit in fruits: print(f"我喜欢吃{fruit}")
4.2.4 实例演示3:使用range()函数(指定循环次数)
range()函数用于生成一个整数序列,常用在for循环中,指定循环次数,语法:range(起始值, 结束值, 步长)(起始值默认0,步长默认1,结束值不包含)。
# for循环+range(),打印1-5 for i in range(1, 6): # 生成1,2,3,4,5(结束值6不包含) print(i) # 步长为2,打印1,3,5 for i in range(1, 6, 2): print(i)
4.3 循环嵌套
和分支嵌套类似,循环嵌套指的是“在一个循环体中,再嵌套另一个循环”,用于处理更复杂的重复逻辑(如打印九九乘法表、矩阵等)。
4.3.1 实例演示:打印九九乘法表
# 循环嵌套:九九乘法表 # 外层循环控制行数(1-9) for i in range(1, 10): # 内层循环控制每行的列数(1-i) for j in range(1, i+1): print(f"{j}×{i}={i*j}", end="\t") # end="\t" 使输出对齐 print() # 每行结束后换行
运行结果: 1×1=1 1×2=2 2×2=4 1×3=3 2×3=6 3×3=9 ...(依次类推,直到9×9=81)
五、循环控制语句:break、continue、pass
在循环中,我们可以通过 break、continue、pass 三个语句,灵活控制循环的执行流程(终止循环、跳过某次循环等)。
5.1 break:终止整个循环
作用:当执行到break语句时,立即终止当前所在的循环(无论循环条件是否满足),跳出循环,继续执行循环后面的代码。
# break实例:找到10以内的第一个偶数,然后终止循环 for i in range(1, 11): if i % 2 == 0: print(f"找到的第一个偶数是:{i}") break # 终止循环,后续i不再遍历 print(f"当前数字:{i}")
运行结果: 当前数字:1 找到的第一个偶数是:2
5.2 continue:跳过本次循环
作用:当执行到continue语句时,跳过本次循环的剩余代码,直接进入下一次循环的条件判断(不会终止整个循环)。
# continue实例:打印1-10中的奇数,跳过偶数 for i in range(1, 11): if i % 2 == 0: continue # 跳过本次循环,不执行下面的print print(f"奇数:{i}")
运行结果: 奇数:1 奇数:3 奇数:5 奇数:7 奇数:9
5.3 pass:空语句(占位)
作用:pass是一个空语句,没有实际功能,仅用于“占位”(比如暂时不想写循环体或分支体,避免语法错误)。
# pass实例:占位,后续补充代码 for i in range(1, 5): if i % 2 == 0: pass # 暂时不处理偶数,先占位,避免报错 else: print(f"奇数:{i}")
5.4 三者区别总结
|
语句 |
作用 |
是否终止整个循环 |
|---|---|---|
|
break |
终止当前循环,跳出循环 |
是 |
|
continue |
跳过本次循环剩余代码,进入下一次循环 |
否 |
|
pass |
占位,无实际功能 |
否 |
六、综合实战案例
结合前面所学的分支、循环、循环控制语句,完成一个综合案例,巩固知识点。
案例:简易猜数字游戏
需求:程序随机生成一个1-100之间的整数,用户最多猜5次,每次猜完后提示“太大了”“太小了”,猜对则提示胜利并终止程序,猜错5次则提示失败。
import random # 导入随机数模块
# 生成1-100之间的随机数
target = random.randint(1, 100)
count = 0 # 记录猜的次数
print("欢迎来到猜数字游戏!")
print("规则:随机生成1-100之间的数字,你有5次机会猜对它~")
# 循环5次,最多猜5次
while count < 5:
# 接收用户输入,转换为整数
try:
guess = int(input(f"请输入你猜的数字(第{count+1}次):"))
count += 1 # 次数加1
except ValueError:
print("输入错误!请输入一个整数。")
continue # 跳过本次循环,不占用次数
# 分支判断
if guess == target:
print(f"恭喜你!猜对了!你用了{count}次机会。")
break # 猜对,终止循环
elif guess > target:
print("太大了!再猜小一点~")
else:
print("太小了!再猜大一点~")
else:
# while循环正常结束(未触发break),说明5次都猜错了
print(f"游戏失败!正确答案是:{target}")
案例解析:
-
使用
random.randint(1,100)生成随机数,需要导入random模块。 -
用while循环控制猜的次数(最多5次),count变量记录次数。
-
用try-except捕获用户输入的非整数错误,避免程序报错,并用continue跳过本次循环,不占用次数。
-
用if-elif-else判断猜的数字大小,猜对则用break终止循环;5次都猜错则执行while的else语句(while循环正常结束时执行)。
七、常见问题与注意事项
7.1 语法错误
-
缩进错误:Python对缩进敏感,分支、循环的代码块必须缩进,且缩进一致(建议统一用4个空格)。
-
冒号遗漏:if、elif、else、while、for语句后面必须加冒号(:),否则会报语法错误。
-
变量未初始化:while循环中,循环计数器(如i)必须先初始化,否则会报“变量未定义”错误。
7.2 逻辑错误
-
无限循环:while循环忘记更新条件变量,导致条件永远为True,需手动终止程序。
-
分支条件顺序错误:多分支if-elif-else中,条件从宽松到严格,导致后续条件无法执行。
-
break/continue使用位置错误:break只能终止当前所在的循环,嵌套循环中,break只终止内层循环,不影响外层循环。
7.3 学习建议
-
多写实例:流程控制的核心是“逻辑”,只有多写代码、多测试,才能熟练掌握。
-
调试代码:遇到错误时,不要急于求助,先查看报错信息,定位错误位置(如缩进错误、变量未定义),逐步调试。
-
结合场景:思考实际开发中哪些场景需要分支、哪些需要循环,比如用户登录验证(分支)、批量处理数据(循环)。
八、总结
Python流程控制主要分为三大结构:顺序结构(默认执行)、分支结构(根据条件判断)、循环结构(重复执行)。其中:
-
分支结构:用if、if-else、if-elif-else实现,核心是“条件判断”,适用于多场景选择。
-
循环结构:while循环(条件满足就循环)、for循环(遍历可迭代对象),适用于重复执行场景。
-
循环控制:break(终止循环)、continue(跳过本次)、pass(占位),灵活控制循环流程。
掌握流程控制是Python编程的基础,后续学习函数、类、模块等内容,都需要结合流程控制实现复杂逻辑。建议多练习综合案例,将知识点融会贯通,逐步提升编程思维。
更多推荐



所有评论(0)