信息科技· 第3章 算法与 Python 编程
3.6知识点 · 课时

循环结构:让程序会重复

掌握 for 循环和 while 循环,让程序能重复执行,批量处理数据。

让程序会重复:循环结构

上一关的程序能批改一道题了。但一张试卷有 10 道题,难道要写 10 遍 if?当然不用——循环结构让程序自动重复执行。

for 循环:遍历已知的数据

最常用的场景:遍历列表的每个元素:

answers = ["A", "C", "B", "D", "A"]

for a in answers:
    print(a)

输出:

A
C
B
D
A

for a in answers 的意思是:把 answers 列表里的元素逐个取出,每次赋值给 a,执行缩进的代码。

for 循环 + 累加:统计总分

循环最常见的用法是累加——把多次结果汇总:

standard = ["A", "C", "B", "D", "A"]
student  = ["A", "B", "B", "D", "C"]

total = 0                        # 先准备一个累加器
for i in range(5):               # i 从 0 到 4
    if student[i] == standard[i]:
        total = total + 2        # 答对加 2 分

print("总分:", total)
  • range(5) 生成 0, 1, 2, 3, 4
  • total = total + 2 是累加:把 total 加 2 后重新赋值给 total

range():生成数字序列

range(5)        # 0, 1, 2, 3, 4
range(1, 6)     # 1, 2, 3, 4, 5
range(0, 10, 2) # 0, 2, 4, 6, 8(步长 2)

while 循环:满足条件就继续

while 适合不确定重复次数的场景:

count = 0
while count < 3:
    print("第", count + 1, "次")
    count = count + 1

输出"第 1 次""第 2 次""第 3 次",然后 count 变成 3,条件 count < 3 为 False,循环结束。

⚠️ while 循环必须有改变条件的操作(如 count = count + 1),否则会死循环——永远停不下来!

for vs while

forwhile
适合已知次数(遍历列表、range)未知次数(满足条件就继续)
例子批改 5 道题反复让学生输入,直到输对

break 和 continue

语句作用
break立即结束整个循环
continue跳过本次,继续下一次循环
for i in range(10):
    if i == 5:
        break       # 到 5 就停,不继续了
    print(i)        # 输出 0,1,2,3,4

📱 项目推进·第 6 关

用循环让「自动批改助手」批改整张试卷:

# 自动批改助手 v0.3:循环批改版
standard = ["A", "C", "B", "D", "A"]
student  = ["A", "B", "B", "D", "C"]

total = 0
for i in range(5):
    if student[i] == standard[i]:
        total = total + 2
        print(f"第{i+1}题:✅ 正确")
    else:
        print(f"第{i+1}题:❌ 错误(正确:{standard[i]})")

print("———")
print("总分:", total, "/", len(standard) * 2)

现在程序能批改 5 道题了!最后一关,我们把它做成完整的成品。

f"第{i+1}题"f-string(格式化字符串),花括号 {} 里可以放变量,自动替换成值。非常实用!

🤔 思考

  • 如果忘了写 total = total + 2,总分会是多少?为什么?
  • 用 while 循环改写上面的 for 循环,怎么写?
  • range(1, 10) 生成的数字从几到几?

📝 知识小结

  • 循环结构:让代码重复执行
  • for x in 列表:遍历每个元素;for i in range(n):按次数循环
  • while 条件:满足条件就继续(注意避免死循环)
  • 累加:用 total = total + n 汇总多次结果
  • break 跳出循环,continue 跳过本次
  • f"...{变量}...":f-string 格式化字符串

随堂练习

检验一下你对本节内容的理解

下面代码运行后,total 的值是多少?

total = 0
for i in range(4):
    total = total + i

print(total)