Python 流程控制全解析:if 语句与循环语句实战
前言
在 Python 编程中,流程控制是核心基础之一,它决定了程序的执行顺序,让代码能够根据条件做出判断、重复执行指定逻辑,是实现复杂功能的必备知识。本文将从if 条件语句、while 循环、for 循环和循环控制语句四个核心模块出发,结合实战示例详细讲解 Python 流程控制的使用方法、语法规则和常见问题,帮助新手快速掌握并灵活运用。
一、if 条件语句:根据条件执行不同逻辑
if 语句是 Python 中最基础的分支结构,用于根据布尔表达式的结果判断执行哪一段代码块。其核心语法要求包括:条件表达式后必须加冒号,代码块必须缩进(通常 4 个空格);条件表达式可加括号提升可读性,非语法强制要求。
1.1 基本 if-else 语句
最基础的 if 语句包含if和else两个分支,实现 “二选一” 的执行逻辑,当条件为真时执行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 嵌套 for、for 嵌套 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 中注释分为单行注释,使用#开头,解释器会忽略注释内容,仅用于程序员阅读。注释的两种使用方式:
- 行首注释:整行均为注释,用于说明代码块的功能;
- 行内注释:在代码行末尾加注释,用于说明该行代码的作用。
实战示例:带注释的成绩计算代码
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 |
高级用法:多个占位符同时使用时,变量需用元组或字典传递:
- 元组传递(按顺序匹配):
python
运行
first = 1
second = 2
print('第%d名和第%d名' % (first, second))
# 输出:第1名和第2名
- 字典传递(按键匹配,无序):
python
运行
num = {'first':1, 'second':2}
print('第%(first)d名和第%(second)d名' % num)
# 输出:第1名和第2名
三、循环控制语句:break 与 continue
使用 while 和 for 循环时,默认会按顺序执行完所有循环体,当需要提前跳出循环或跳过当前循环时,使用 Python 提供的循环控制语句:break和continue,二者均作用于离其最近的循环。
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 += score和i += 1,直接重新执行 while 循环,再次提示输入小明的 Python 成绩,直到输入有效成绩为止。
3.3 break 与 continue 的核心区别
为了更清晰地区分二者的使用场景,核心区别总结如下表:
表格
| 控制语句 | 核心作用 | 对循环的影响 | 适用场景 |
|---|---|---|---|
| break | 跳出整个循环 | 终止循环,不再执行 | 满足条件时,停止整个循环操作 |
| continue | 跳过当前循环,继续下一次 | 循环继续执行 | 满足条件时,忽略当前次循环 |
共同注意点:break和continue仅作用于离其最近的循环,嵌套循环中不会影响外层循环。
四、逻辑运算符:增强条件判断的灵活性
在流程控制中,经常需要多条件联合判断(如成绩 0-100、年龄 18-60),此时需要使用 Python 的逻辑运算符,将多个条件表达式组合成一个复合条件,运算结果仍为布尔值(True/False)。Python 中常用的逻辑运算符有 3 个:and、or、not,具体说明如下表:
表格
| 逻辑运算符 | 名称 | 运算规则 | 示例 | 运算结果 |
|---|---|---|---|---|
| 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 流程控制是编程的基础,核心围绕“判断”和“循环”展开,掌握其语法和使用技巧是编写高效代码的关键,本文核心知识点总结如下:
- if 语句:实现分支逻辑,单分支用
if,双分支用if-else,多分支用if-elif-else,注意条件顺序、缩进和冒号三大要点; - while 循环:条件驱动的循环,先判断后执行,需手动维护循环变量,避免死循环,适合循环次数不确定的场景;
- for 循环:迭代驱动的循环,遍历可迭代对象,无需手动维护循环变量,适合循环次数确定的场景,
range()函数是其常用搭配; - 循环嵌套:while 和 for 均可互相嵌套,外层循环执行一次,内层循环执行一遍,适合多维度重复操作;
- 循环控制:
break跳出整个循环,continue跳过当前循环,二者均作用于最近的循环; - 辅助技能:注释提升代码可读性,字符串格式化实现动态输出,逻辑运算符实现多条件联合判断。
六、实战练习:巩固流程控制知识
- 编写程序,使用 if 语句判断一个数是否为偶数、奇数或 0;
- 编写程序,使用 while 循环计算 1-100 的累加和;
- 编写程序,使用 for 循环遍历列表,筛选出列表中的大于 10 的数字;
- 编写程序,使用循环嵌套为 3 名学生各输入 4 门成绩,计算每人平均分,若成绩无效则重新输入(使用 continue);
- 编写程序,使用 for 循环和 break,遍历 1-20 的数字,当遇到第一个能被 5 整除的数字时,立即跳出循环并输出该数字。
写在最后:Python 流程控制的语法并不复杂,重点在于理解执行逻辑和多实战练习。新手在学习过程中,要注意避坑(如缩进、冒号、死循环),通过大量的实战案例积累经验,才能灵活运用流程控制实现复杂的业务逻辑
更多推荐



所有评论(0)