Skip to content

第 5 章:循环结构

本章能学到什么

  • for 循环和 range() 的用法
  • while 循环
  • breakcontinue
  • 简单的嵌套循环

循环结构:让程序重复做事

让 LED 闪烁 100 次,难道要写 100 遍"亮、灭"?当然不用——用循环结构

for 循环:数着次数重复

python
for i in range(5):
    print(f"第 {i} 次闪烁")

range(5) 依次产生 0, 1, 2, 3, 4从 0 开始,不包含 5),每产生一个数,循环体就执行一次。

range 的三种写法:

python
range(5)        # 0,1,2,3,4
range(1, 6)     # 1,2,3,4,5(起点, 终点+1)
range(0, 10, 2) # 0,2,4,6,8(起点, 终点, 步长)

while 循环:条件不满足就重复

python
count = 0
while count < 3:
    print("测量一次距离")
    count += 1      # 千万别忘了这行!

while 每次先检查条件,成立就执行循环体,再回到开头重新检查。

在 Pico 上会经常看到:

python
while True:
    # 永远循环:一直检测传感器

单片机程序通常永远不结束——就像第一册 Mind+ 里的"循环执行"积木。

break 和 continue

python
for i in range(10):
    if i == 3:
        continue    # 跳过本次,直接进下一轮
    if i == 7:
        break       # 立刻结束整个循环
    print(i)
# 输出:0 1 2 4 5 6
  • continue:这一轮不干了,下一轮继续
  • break:整个循环不干了,直接跳出

嵌套循环

循环里面还能套循环:

python
for row in range(3):
    for col in range(4):
        print(f"({row},{col})", end=" ")
    print()     # 换行

输出一个 3 行 4 列的坐标表。嵌套不要超过两三层,否则读起来会很晕。

常见坑

  • while 循环里忘记更新条件变量 → 死循环,程序卡死(电脑上按 Ctrl+C 终止)
  • range(5) 不包含 5,想数到 5 要写 range(1, 6)
  • 循环体忘了缩进,或者缩进错了层级

想一想

下面两段代码有什么区别?分别输出几次?

python
# 代码 A
for i in range(3):
    print("亮")

# 代码 B
i = 0
while i < 3:
    print("亮")
💡 查看答案
  • 代码 A:用 for 循环,打印 3 次"亮",然后正常结束
  • 代码 B:是死循环,会无限打印"亮"停不下来——因为循环体里忘了写 i += 1i 永远是 0,条件 i < 3 永远成立

这就是本章"常见坑"里说的:用 while 千万别忘记更新条件变量。

不积跬步,无以至千里;万里之行,始于当下。