🔄 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)  # 5050

2. 求阶乘

# 5! = 1×2×3×4×5
n = 5
result = 1
for i in range(1, n + 1):
    result *= i
print(result)  # 120

3. 打印图形

# 打印三角形
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