Python 循环语句(一文讲透)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言
在编程的世界中,循环语句如同“永不停歇的齿轮”,驱动着代码高效执行重复性任务。无论是计算阶乘、遍历数据集,还是构建复杂的算法,Python 的循环语句都是开发者不可或缺的工具。对于编程初学者而言,理解循环的逻辑和用法,是迈向进阶开发的关键一步。本文将从基础语法到实战案例,结合形象比喻和代码示例,系统讲解 Python 中的 循环语句,帮助读者快速掌握这一核心技能。
Python 循环语句的核心概念
1. 什么是循环?
循环(Loop)是编程中一种重复执行代码块的结构。它允许开发者通过少量代码完成大量重复操作,例如遍历列表、生成序列或持续监听用户输入。在 Python 中,循环主要分为两种类型:
while
循环:当满足条件时,重复执行代码块。for
循环:遍历可迭代对象(如列表、字符串)的元素,并对每个元素执行操作。
2. 循环的核心作用
- 减少重复代码:避免手动编写相同逻辑的代码多次。
- 自动化任务:例如批量处理文件、计算复杂数值等。
- 数据处理:遍历列表、字典等数据结构,提取或修改数据。
Python 的 while
循环
1. 基础语法与逻辑
while
循环的语法结构如下:
while 条件表达式:
# 循环体(重复执行的代码)
其执行流程是:
- 判断条件表达式是否为
True
; - 如果为
True
,执行循环体内的代码; - 循环结束后,再次回到步骤 1,直到条件为
False
。
示例:计算 1 到 10 的和
sum_result = 0
counter = 1
while counter <= 10:
sum_result += counter
counter += 1
print("总和为:", sum_result) # 输出:总和为: 55
关键点解析:
counter += 1
是必须的,否则会形成无限循环(条件永远为True
)。- 可以通过
break
或continue
语句控制循环的提前终止或跳过当前迭代。
2. while
循环的典型场景
- 用户交互:例如持续询问用户输入,直到输入特定值。
- 实时监控:如循环检查某个传感器的数值变化。
Python 的 for
循环
1. 基础语法与逻辑
for
循环的语法结构为:
for 变量 in 可迭代对象:
# 循环体
其执行流程是:
- 遍历可迭代对象中的每个元素;
- 将当前元素赋值给变量;
- 执行循环体内的代码。
示例:遍历列表并打印元素
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
2. for
循环的增强功能
(1) range()
函数
用于生成数字序列,常与 for
循环配合使用。
for i in range(5):
print(i)
range()
还支持指定起始值、结束值和步长:
for i in range(1, 11, 2):
print(i)
(2) 遍历字符串
字符串是字符的集合,可直接通过 for
循环遍历:
word = "Python"
for char in word:
print(char.upper())
(3) 遍历字典
可以通过 items()
方法同时获取键和值:
student_scores = {"Alice": 90, "Bob": 85, "Charlie": 95}
for name, score in student_scores.items():
print(f"{name} 的成绩是 {score}")
循环的进阶技巧
1. 嵌套循环
当循环体内包含另一个循环时,称为嵌套循环。这常用于处理多维数据(如矩阵运算)。
示例:打印乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end=" ")
print()
2. 控制循环的 break
和 continue
break
:立即终止整个循环。continue
:跳过当前迭代,进入下一次循环。
示例:寻找第一个偶数
numbers = [1, 3, 5, 4, 7, 8]
for num in numbers:
if num % 2 == 0:
print("找到第一个偶数:", num)
break
3. else
子句
循环结束后(未被 break
终止时),可执行 else
块中的代码。
示例:检测素数
num = 17
for i in range(2, int(num**0.5)+1):
if num % i == 0:
print(f"{num} 不是素数")
break
else:
print(f"{num} 是素数")
列表推导式:循环的“速记法”
列表推导式(List Comprehension)是 Python 中一种简洁的循环语法,可快速生成列表。其基本形式为:
[表达式 for 变量 in 可迭代对象 if 条件]
示例:生成平方数列表
squares = [x**2 for x in range(1, 6)]
print(squares) # 输出:[1, 4, 9, 16, 25]
对比传统 for
循环:
squares = []
for x in range(1, 6):
squares.append(x**2)
列表推导式的优势在于代码更简洁,同时提升可读性。
循环性能优化与陷阱
1. 避免无限循环
当 while
循环的条件或 for
循环的迭代对象不满足终止条件时,程序将无限执行。例如:
counter = 0
while counter < 5:
print("计数器:", counter)
counter = 0
while counter < 5:
print("计数器:", counter)
counter += 1
2. 循环内修改迭代对象
在遍历列表时,直接修改列表可能导致意外行为。例如:
my_list = [1, 2, 3]
for item in my_list:
if item == 2:
my_list.remove(item)
print(my_list) # 输出:[1, 3](预期可能为 [1, 3],但需谨慎操作)
建议通过生成新列表或逆序遍历来规避此类问题。
3. 选择更高效的循环结构
- 避免嵌套循环的高复杂度:例如 O(n²) 的嵌套循环在大数据量下可能效率低下。
- 使用生成器:通过
yield
关键字实现延迟计算,节省内存。
实战案例:斐波那契数列生成
斐波那契数列是经典算法问题,其前两项为 0 和 1,后续项为前两项之和。我们可以用循环实现其生成。
方法 1:while
循环
n = 10
a, b = 0, 1
result = []
while len(result) < n:
result.append(a)
a, b = b, a + b
print(result) # 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
方法 2:for
循环
n = 10
a, b = 0, 1
fib_list = [a]
for _ in range(n-1):
a, b = b, a + b
fib_list.append(a)
print(fib_list)
结论
Python 的循环语句是编程中解决重复性任务的核心工具。通过掌握 while
、for
循环的基础语法,以及列表推导式、break/continue
等进阶技巧,开发者可以高效地处理从简单遍历到复杂算法的各类场景。
本文通过案例和比喻,系统梳理了循环语句的逻辑与用法,帮助读者逐步构建扎实的编程基础。无论是计算数学问题、处理数据集,还是开发实际应用,循环语句都是通往更复杂编程世界的桥梁。
实践建议:尝试用循环解决日常问题(如文件批量重命名、数据统计),并结合调试工具观察循环的执行过程。只有通过不断练习,才能真正掌握这一强大工具。
通过本文的学习,读者应能理解 Python 循环语句的核心原理,并在实际开发中灵活运用。循环不仅是代码的“重复执行器”,更是开发者思维的“逻辑放大器”。