🔄 12. 循环语句 for/while
本章概述
学习 Python 的两种循环:for 循环和 while 循环。 预计学习时间:50 分钟
12.1 for 循环
遍历可迭代对象(序列、集合、字典等)。
基本格式
for 变量 in 可迭代对象:
循环体代码遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)遍历字符串
for char in "Python":
print(char)带索引遍历(enumerate)
推荐使用
需要索引时用
enumerate(),比自己计数更优雅。
fruits = ["苹果", "香蕉", "橙子"]
for i, fruit in enumerate(fruits):
print(i, fruit)
# 可以指定起始索引
for i, fruit in enumerate(fruits, start=1):
print(f"第{i}个:{fruit}")12.2 range() 函数
生成数字序列,常和 for 循环配合使用。
基本用法
# range(n):0 到 n-1
for i in range(5):
print(i) # 0, 1, 2, 3, 4
# range(start, end):start 到 end-1
for i in range(2, 6):
print(i) # 2, 3, 4, 5
# range(start, end, step):指定步长
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8
# 倒序
for i in range(5, 0, -1):
print(i) # 5, 4, 3, 2, 1注意
range()是含头不含尾的,和切片一样。range(5)生成的是 0,1,2,3,4,不包含 5。
range 转列表
lst = list(range(10))
print(lst) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]12.3 while 循环
条件成立就一直循环。
基本格式
while 条件:
循环体代码示例
# 打印1到5
i = 1
while i <= 5:
print(i)
i += 1小心死循环!
一定要确保循环条件最终会变成 False,否则程序会一直跑下去。
# ❌ 死循环(i永远是1) i = 1 while i <= 5: print(i) # 忘记写 i += 1 了!
while 循环的适用场景
- 不知道循环次数,只知道循环条件时
- 需要一直循环直到某个条件满足时
12.4 for vs while
| 循环类型 | 适用场景 | 示例 |
|---|---|---|
for | 知道循环次数,遍历序列 | 遍历列表、遍历range |
while | 不知道循环次数,按条件循环 | 用户输入、游戏循环 |
什么时候用 for?
- 遍历列表、字符串、字典等
- 知道要循环多少次
- 大多数场景都用 for
什么时候用 while?
- 循环次数不确定
- 需要根据条件决定是否继续
- 游戏主循环、事件循环等
优先用 for
大多数情况下,for 循环更简洁、更安全,不容易写出死循环。
12.5 循环嵌套
循环里面再写循环。
示例:打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行示例:遍历二维列表
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for item in row:
print(item, end=" ")
print()嵌套层数
一般嵌套 2-3 层就够了,太多层会让代码难以理解。
12.6 循环中的 else
Python 特色
Python 的循环可以带 else,这是很多语言没有的。
for-else
for i in range(5):
print(i)
if i == 10:
break
else:
print("循环正常结束了") # 没有遇到break就会执行while-else
i = 0
while i < 5:
print(i)
i += 1
else:
print("循环正常结束了")else 什么时候执行?
- ✅ 循环正常结束(遍历完所有元素 / 条件变为False)→ 执行 else
- ❌ 循环被 break 中断 → 不执行 else
应用场景:查找元素
numbers = [1, 3, 5, 7, 9]
target = 4
for num in numbers:
if num == target:
print("找到了")
break
else:
print("没找到") # 循环正常结束,说明没找到很实用
不用再单独弄一个 flag 变量了,更简洁。
12.7 常见应用场景
1. 累加求和
# 求1到100的和
total = 0
for i in range(1, 101):
total += i
print(total) # 50502. 求阶乘
# 5! = 1×2×3×4×5
n = 5
result = 1
for i in range(1, n + 1):
result *= i
print(result) # 1203. 打印图形
# 打印三角形
n = 5
for i in range(1, n + 1):
print("*" * i)4. 用户输入验证
while True:
password = input("请输入密码:")
if len(password) >= 6:
print("密码设置成功")
break
else:
print("密码太短,至少6位")🔗 相关章节
📝 我的笔记
在这里记录你的理解、疑问和练习代码
# 你的练习代码
✅ 本章检查清单
- 掌握 for 循环的基本用法
- 会使用 range() 函数
- 掌握 while 循环
- 知道 for 和 while 的区别和适用场景
- 理解循环嵌套
- 了解循环中的 else