目录

一、前言:什么是流程控制?

二、基础流程结构:顺序结构

2.1 核心定义

2.2 实例演示

2.3 注意事项

三、分支结构:根据条件执行不同代码

3.1 单分支:if语句

3.1.1 语法格式

3.1.2 实例演示

3.1.3 易错点

3.2 双分支:if-else语句

3.2.1 语法格式

3.2.2 实例演示

3.3 多分支:if-elif-else语句

3.3.1 语法格式

3.3.2 实例演示

3.3.3 易错点

3.4 分支嵌套

3.4.1 实例演示

3.4.2 注意事项

四、循环结构:重复执行指定代码

4.1 while循环:条件满足就循环

4.1.1 语法格式

4.1.2 实例演示1:基础循环

4.1.3 实例演示2:无限循环(可控终止)

4.1.4 易错点:无限循环

4.2 for循环:遍历可迭代对象

4.2.1 语法格式

4.2.2 实例演示1:遍历字符串

4.2.3 实例演示2:遍历列表

4.2.4 实例演示3:使用range()函数(指定循环次数)

4.3 循环嵌套

4.3.1 实例演示:打印九九乘法表

五、循环控制语句:break、continue、pass

5.1 break:终止整个循环

5.2 continue:跳过本次循环

5.3 pass:空语句(占位)

5.4 三者区别总结

六、综合实战案例

案例:简易猜数字游戏

七、常见问题与注意事项

7.1 语法错误

7.2 逻辑错误

7.3 学习建议

八、总结


一、前言:什么是流程控制?

在编程中,流程控制指的是通过特定语句,控制程序代码的执行顺序。默认情况下,Python程序会按照代码的书写顺序“自上而下、逐行执行”,这就是最基础的“顺序结构”。但实际开发中,我们往往需要根据不同条件执行不同代码(分支结构),或重复执行某段代码(循环结构),这两类就是流程控制的核心内容。

流程控制是Python编程的基础,也是实现复杂逻辑的核心,掌握它能让你的代码从“简单的逐行执行”升级为“有判断、有重复的智能逻辑”,适用于所有Python开发场景(如数据分析、自动化、Web开发等)。本教程将从基础到进阶,结合实例讲解所有核心知识点,兼顾入门理解和实战应用。

二、基础流程结构:顺序结构

2.1 核心定义

顺序结构是最基础、最默认的流程结构,代码按照“从上到下、从左到右”的顺序依次执行,没有判断、没有跳转,每一行代码都会被执行一次。

2.2 实例演示

以下代码就是典型的顺序结构,执行顺序为:先打印提示语,再接收用户输入,最后打印结果,步骤固定且无跳转。


# 顺序结构实例:接收用户输入并打印信息 print("欢迎进入Python流程控制学习!") # 第一步:打印提示 name = input("请输入你的名字:") # 第二步:接收用户输入 age = int(input("请输入你的年龄:")) # 第三步:接收年龄并转换为整数 print(f"你好,{name}!你今年{age}岁,开始学习流程控制吧~") # 第四步:打印结果

2.3 注意事项

  • 顺序结构中,代码的执行顺序完全依赖书写顺序,修改代码顺序会改变程序运行结果。

  • 若某一行代码出现错误(如语法错误、类型错误),程序会在该行终止,后续代码不再执行。

三、分支结构:根据条件执行不同代码

分支结构的核心是“判断条件”:当条件满足时,执行某一段代码;条件不满足时,执行另一段代码(或不执行)。Python中分支结构主要通过 ifif-elseif-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

在循环中,我们可以通过 breakcontinuepass 三个语句,灵活控制循环的执行流程(终止循环、跳过某次循环等)。

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编程的基础,后续学习函数、类、模块等内容,都需要结合流程控制实现复杂逻辑。建议多练习综合案例,将知识点融会贯通,逐步提升编程思维。

更多推荐