前言

在 Python 编程中,流程控制是核心基础之一,它决定了程序的执行顺序,让代码能够根据条件做出判断、重复执行指定逻辑,是实现复杂功能的必备知识。本文将从if 条件语句while 循环for 循环循环控制语句四个核心模块出发,结合实战示例详细讲解 Python 流程控制的使用方法、语法规则和常见问题,帮助新手快速掌握并灵活运用。

一、if 条件语句:根据条件执行不同逻辑

if 语句是 Python 中最基础的分支结构,用于根据布尔表达式的结果判断执行哪一段代码块。其核心语法要求包括:条件表达式后必须加冒号,代码块必须缩进(通常 4 个空格);条件表达式可加括号提升可读性,非语法强制要求。

1.1 基本 if-else 语句

最基础的 if 语句包含ifelse两个分支,实现 “二选一” 的执行逻辑,当条件为真时执行if代码块,为假时执行else代码块。语法格式

python

运行

if 条件表达式:
    语句块1  # 条件为True时执行
else:
    语句块2  # 条件为False时执行

实战示例:判断学生考试成绩是否合格

python

运行

print('请输入学生考试成绩:')
score = int(input())
if score >= 60:
    print('合格')
else:
    print('需要努力')

输入输出示例

  • 输入 80 → 输出:合格
  • 输入 50 → 输出:需要努力

1.2 多重 if 语句(if-elif-else)

当需要多个条件分支时,使用elif关键字实现 “多选一” 逻辑,elif可连续使用多个,else为可选的默认分支。执行规则:条件从上到下依次判断,只要有一个条件成立,后续条件将不再执行。语法格式

python

运行

if 条件表达式1:
    语句块1
elif 条件表达式2:
    语句块2
elif 条件表达式3:
    语句块3
...
else:
    语句块n  # 所有条件都不成立时执行

实战示例:根据成绩划分等级

python

运行

print('请输入学生考试成绩:')
score = int(input())
if score >= 90:
    print('优秀')
elif score >= 70:
    print('良好')
elif score >= 60:
    print('合格')
else:
    print('需要努力')

输入输出示例

  • 输入 100 → 优秀;输入 80 → 良好;输入 60 → 合格;输入 50 → 需要努力

1.3 条件表达式与关系运算符

if 语句的核心是条件表达式,由操作数 + 关系运算符 + 操作数组成,运算结果为布尔值(True/False)。Python 中常用的关系运算符如下表所示:

表格

关系运算符 说明 示例 运算结果
== 等于 10 == 9 False
!= 不等于 10 != 9 True
> 大于 10 > 9 True
< 小于 10 < 9 False
>= 大于等于 10 >= 9 True
<= 小于等于 10 <= 9 False

注意:关系运算符的左右操作数需保证类型可比较,否则会报错(如数字与字符串直接比较)。

1.4 if 语句的常见问题与避坑

使用 if 语句时,新手容易因语法或逻辑问题导致程序报错,以下是三大高频问题及解决方案:

表格

问题类型 错误示例 问题原因与解决方案
逻辑顺序错误 if score>=60: print (' 合格 ')elif score>=70: print (' 良好 ')elif score>=90: print (' 优秀 ') 条件从上到下判断,100 会先匹配 score>=60,导致后续高等级条件失效;解决方案:按条件从严格到宽松排序
代码块未缩进 / 缩进不一致 if score>=90:print (' 优秀 ') (无缩进)print (' 优秀 2')(多 1 个空格) Python 通过缩进而非大括号划分代码块,解决方案:同级代码块保持 4 个空格缩进,统一缩进标准
忘记加冒号 if score>=90print (' 优秀 ') 条件表达式后加冒号是 Python 语法强制要求,解决方案:养成写完条件加冒号的习惯

二、Python 循环语句:重复执行指定代码块

在编程中,经常需要重复执行某段代码(如多次输入成绩、遍历数据),Python 提供while 循环for 循环两种实现方式,其中 while 基于条件判断循环,for 基于遍历元素循环,二者均可实现嵌套和循环控制。

2.1 while 循环:先判断后执行的条件循环

while 循环的核心是条件表达式,先判断条件是否为 True,若为 True 则执行循环体,若为 False 则跳出循环,属于 “先判断,后执行” 的逻辑,适合循环次数不确定的场景。

2.1.1 基本 while 循环

语法格式

python

运行

初始化循环变量
while 条件表达式:
    循环体代码
    更新循环变量  # 避免死循环

核心要求:必须在循环体内更新循环变量,否则条件将永远为 True,导致死循环实战示例 1:循环输出 1-5 的数字

python

运行

count = 0
while count < 5:
    count = count + 1
    print(count)
# 输出:1 2 3 4 5

实战示例 2:输入 5 门课程成绩,计算平均分

python

运行

i = 1  # 初始化计数器,记录课程数
sum_score = 0  # 初始化总成绩
while i <= 5:
    print(f'请输入第{i}门课程的考试成绩:')
    score = int(input())
    sum_score += score  # 累加成绩
    i += 1  # 计数器加1
avg_score = sum_score / (i-1)
print(f'5门课程的平均成绩是:{avg_score}')
2.1.2 while 循环嵌套

在一个 while 循环中嵌套另一个 while 循环,实现多层重复逻辑,外层循环执行一次,内层循环完整执行一遍。适合多维度重复操作(如为多名学生分别输入多门成绩)。实战示例:为 2 名学生各输入 5 门成绩,计算每人平均分

python

运行

j = 1  # 外层计数器:记录学生数
while j <= 2:
    sum_score = 0  # 每个学生的总成绩清零
    i = 1  # 内层计数器:记录课程数
    name = input('请输入学生姓名:')
    while i <= 5:
        print(f'请输入第{i}门课程的考试成绩:')
        score = int(input())
        sum_score += score
        i += 1
    avg_score = sum_score / 5
    print(f'{name}的平均成绩是:{avg_score}')
    j += 1
print('学生成绩输入完成')

执行逻辑:外层循环执行 2 次(2 名学生),每次外层循环执行时,内层循环执行 5 次(5 门成绩),完成一名学生的成绩录入和平均分计算。

2.2 for 循环:基于遍历的迭代循环

for 循环是 Python 中最常用的循环,基于遍历可迭代对象(字符串、列表、元组、range 对象等)实现循环,无需手动维护循环变量,适合循环次数确定的场景。其核心逻辑:依次取出可迭代对象中的每个元素,赋值给循环变量,直到元素遍历完毕。

2.2.1 for 循环的四种常见用法

Python 中 for 循环的遍历对象丰富,常见用法包括遍历字符串、列表、元组和 range 对象,具体如下表所示:

表格

遍历对象 语法示例 执行逻辑 输出结果
字符串 for letter in 'Python':print(letter) 逐个取出字符串的每个字符 P y t h o n
列表 fruits = [' 西瓜 ',' 苹果 ',' 葡萄 ']for f in fruits:print(f) 逐个取出列表的每个元素 西瓜 苹果 葡萄
元组 nums = (1,2,3)for n in nums:print(n) 逐个取出元组的每个元素 1 2 3
range 对象 for i in range(0,5,2):print(i) 遍历 range 生成的整数序列 0 2 4

关键知识点range()函数用于生成整数序列,语法为range(start, end, step),其中start为起始值(默认 0),end为结束值(不包含),step为步长(默认 1)。例如range(5)等价于range(0,5,1),生成序列[0,1,2,3,4]

2.2.2 for 循环实战示例

示例 1:遍历元组,输入 3 门课程成绩计算平均分

python

运行

subjects = ('Python', 'MySQL', 'Linux')
sum_score = 0
for sub in subjects:
    print(f'请输入{sub}的考试成绩:')
    score = int(input())
    sum_score += score
avg_score = sum_score / len(subjects)  # len()获取元组长度(课程数)
print(f'平均成绩是:{avg_score}')

示例 2:结合 range () 循环,输出 10 以内的偶数

python

运行

for i in range(0,10,2):
    print(f'10以内的偶数:{i}')
# 输出:0 2 4 6 8
2.2.3 for 循环嵌套

与 while 循环类似,for 循环也可嵌套,支持for 嵌套 forfor 嵌套 while,实现复杂的多层遍历逻辑。实战示例 1:for 嵌套 for,为 2 名学生各输入 3 门成绩

python

运行

students = ['小明', '小张']
subjects = ('Python', 'MySQL', 'Linux')
# 外层循环:遍历学生
for stu in students:
    sum_score = 0
    # 内层循环:遍历课程
    for sub in subjects:
        print(f'请输入{stu}的{sub}考试成绩:')
        score = int(input())
        sum_score += score
    avg_score = sum_score / len(subjects)
    print(f'{stu}的平均成绩是:{avg_score}')

实战示例 2:for 嵌套 while,实现上述相同功能

python

运行

students = ['小明', '小张']
subjects = ('Python', 'MySQL', 'Linux')
for stu in students:
    sum_score = 0
    i = 0
    while i < len(subjects):
        print(f'请输入{stu}的{subjects[i]}考试成绩:')
        score = int(input())
        sum_score += score
        i += 1
    avg_score = sum_score / len(subjects)
    print(f'{stu}的平均成绩是:{avg_score}')

2.3 循环配套知识点:注释与字符串格式化

在编写循环代码时,注释能提升代码可读性,字符串格式化能实现动态输出,是 Python 开发的必备配套技能,与循环结合使用频率极高。

2.3.1 Python 注释

Python 中注释分为单行注释,使用#开头,解释器会忽略注释内容,仅用于程序员阅读。注释的两种使用方式:

  1. 行首注释:整行均为注释,用于说明代码块的功能;
  2. 行内注释:在代码行末尾加注释,用于说明该行代码的作用。

实战示例:带注释的成绩计算代码

python

运行

# 功能:输入5门课程成绩,计算平均分(行首注释)
i = 1  # 初始化课程计数器(行内注释)
sum_score = 0  # 初始化总成绩,初始值为0(行内注释)
while i <= 5:
    print(f'请输入第{i}门课程的考试成绩:')
    score = int(input())
    sum_score += score  # 累加每门课程的成绩(行内注释)
    i += 1  # 计数器加1,避免死循环(行内注释)
avg_score = sum_score / (i-1)
print(f'5门课程的平均成绩是:{avg_score}')

注释原则:无需每行都加注释,仅对不易理解的逻辑关键变量进行注释,保证代码简洁性。

2.3.2 字符串格式化输出

字符串格式化用于将变量 / 数值动态插入到字符串中,实现灵活的输出效果,Python 中经典的格式化方式为 **% 占位符 ** 方式,与循环结合可实现 “动态编号输出”(如第 1 门、第 2 门)。常用占位符及说明如下表:

表格

占位符 说明 适用类型 示例 输出结果
%d 格式化整数 整型(int) print (' 第 % d 名 ' % 5) 第 5 名
%s 格式化字符串 字符串(str) print (' 姓名:% s' % ' 小明 ') 姓名:小明
%f 格式化浮点数 浮点型(float) print (' 成绩:% f' % 88.5) 成绩:88.500000

高级用法:多个占位符同时使用时,变量需用元组字典传递:

  1. 元组传递(按顺序匹配):

python

运行

first = 1
second = 2
print('第%d名和第%d名' % (first, second))
# 输出:第1名和第2名
  1. 字典传递(按键匹配,无序):

python

运行

num = {'first':1, 'second':2}
print('第%(first)d名和第%(second)d名' % num)
# 输出:第1名和第2名

三、循环控制语句:break 与 continue

使用 while 和 for 循环时,默认会按顺序执行完所有循环体,当需要提前跳出循环跳过当前循环时,使用 Python 提供的循环控制语句:breakcontinue,二者均作用于离其最近的循环

3.1 break 语句:跳出整个循环

break语句的作用是立即跳出当前所在的整个循环,循环一旦被 break 终止,后续循环体代码将不再执行,直接执行循环后的代码。适合满足某个条件时,终止循环的场景(如输入无效成绩时,停止录入)。

实战示例:输入成绩时,若成绩超出 0-100 范围,立即跳出循环

python

运行

students = ['小明', '小张']
subjects = ('Python', 'MySQL', 'Linux')
for stu in students:
    sum_score = 0
    i = 0
    while i < len(subjects):
        print(f'请输入{stu}的{subjects[i]}考试成绩:')
        score = int(input())
        # 判断成绩是否有效
        if score < 0 or score > 100:
            print('成绩无效(0-100),终止当前学生成绩录入!')
            break  # 跳出内层while循环
        sum_score += score
        i += 1
    avg_score = sum_score / len(subjects)
    print(f'{stu}的平均成绩是:{avg_score}')

执行结果:若输入小明的 Python 成绩为 111,触发break,立即跳出内层 while 循环,不再录入小明的后续课程成绩,直接计算平均分(未录入的成绩按 0 计算),然后开始录入小张的成绩。

3.2 continue 语句:跳过当前循环,继续下一次

continue语句的作用是跳过当前循环的剩余代码,直接进入下一次循环,不会终止整个循环,仅跳过当前次迭代。适合满足某个条件时,忽略当前次循环,继续后续循环的场景(如输入无效成绩时,重新输入当前课程成绩)。

实战示例:输入成绩时,若成绩无效,重新输入当前课程成绩

python

运行

students = ['小明', '小张']
subjects = ('Python', 'MySQL', 'Linux')
for stu in students:
    sum_score = 0
    i = 0
    while i < len(subjects):
        print(f'请输入{stu}的{subjects[i]}考试成绩:')
        score = int(input())
        if score < 0 or score > 100:
            print('成绩无效(0-100),请重新输入!')
            continue  # 跳过当前循环,重新执行while
        sum_score += score
        i += 1
    avg_score = sum_score / len(subjects)
    print(f'{stu}的平均成绩是:{avg_score}')

执行结果:若输入小明的 Python 成绩为 111,触发continue,跳过sum_score += scorei += 1,直接重新执行 while 循环,再次提示输入小明的 Python 成绩,直到输入有效成绩为止。

3.3 break 与 continue 的核心区别

为了更清晰地区分二者的使用场景,核心区别总结如下表:

表格

控制语句 核心作用 对循环的影响 适用场景
break 跳出整个循环 终止循环,不再执行 满足条件时,停止整个循环操作
continue 跳过当前循环,继续下一次 循环继续执行 满足条件时,忽略当前次循环

共同注意点breakcontinue仅作用于离其最近的循环,嵌套循环中不会影响外层循环。

四、逻辑运算符:增强条件判断的灵活性

在流程控制中,经常需要多条件联合判断(如成绩 0-100、年龄 18-60),此时需要使用 Python 的逻辑运算符,将多个条件表达式组合成一个复合条件,运算结果仍为布尔值(True/False)。Python 中常用的逻辑运算符有 3 个:andornot,具体说明如下表:

表格

逻辑运算符 名称 运算规则 示例 运算结果
and 逻辑与 两个操作数都为 True,结果才为 True;否则为 False True and False False
or 逻辑或 两个操作数有一个为 True,结果就为 True;否则为 False True or False True
not 逻辑非 对操作数取反,True 变 False,False 变 True not True False

实战示例 1:判断成绩是否在 0-100 范围内

python

运行

score = int(input('请输入成绩:'))
if score < 0 or score > 100:
    print('成绩无效')
else:
    print('成绩有效')

实战示例 2:判断是否为成年人且年龄不超过 60

python

运行

age = int(input('请输入年龄:'))
if age >= 18 and age <= 60:
    print('属于成年劳动力')
else:
    print('非成年劳动力')

实战示例 3:逻辑非的使用,判断是否为非负数

python

运行

num = int(input('请输入一个数:'))
if not (num < 0):
    print('这是一个非负数')
else:
    print('这是一个负数')

五、Python 流程控制核心总结

Python 流程控制是编程的基础,核心围绕“判断”“循环”展开,掌握其语法和使用技巧是编写高效代码的关键,本文核心知识点总结如下:

  1. if 语句:实现分支逻辑,单分支用if,双分支用if-else,多分支用if-elif-else,注意条件顺序、缩进和冒号三大要点;
  2. while 循环:条件驱动的循环,先判断后执行,需手动维护循环变量,避免死循环,适合循环次数不确定的场景;
  3. for 循环:迭代驱动的循环,遍历可迭代对象,无需手动维护循环变量,适合循环次数确定的场景,range()函数是其常用搭配;
  4. 循环嵌套:while 和 for 均可互相嵌套,外层循环执行一次,内层循环执行一遍,适合多维度重复操作;
  5. 循环控制break跳出整个循环,continue跳过当前循环,二者均作用于最近的循环;
  6. 辅助技能:注释提升代码可读性,字符串格式化实现动态输出,逻辑运算符实现多条件联合判断。

六、实战练习:巩固流程控制知识

  1. 编写程序,使用 if 语句判断一个数是否为偶数、奇数或 0;
  2. 编写程序,使用 while 循环计算 1-100 的累加和;
  3. 编写程序,使用 for 循环遍历列表,筛选出列表中的大于 10 的数字;
  4. 编写程序,使用循环嵌套为 3 名学生各输入 4 门成绩,计算每人平均分,若成绩无效则重新输入(使用 continue);
  5. 编写程序,使用 for 循环和 break,遍历 1-20 的数字,当遇到第一个能被 5 整除的数字时,立即跳出循环并输出该数字。

写在最后:Python 流程控制的语法并不复杂,重点在于理解执行逻辑多实战练习。新手在学习过程中,要注意避坑(如缩进、冒号、死循环),通过大量的实战案例积累经验,才能灵活运用流程控制实现复杂的业务逻辑

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐