我让Jose把40个学生的名字逐行打印出来。

他看了我一眼,开始敲键盘:print("Amina")。我等他敲到第三个名字才喊停。

打开网易新闻 查看精彩图片

"如果名单有1万人呢?如果每周都变呢?"这就是教循环的秘诀——不先讲概念,先让人体会没有循环的痛苦。解药来的时候,感受完全不同。

Python的for循环干一件事:遍历集合里的每个元素,逐个处理。我用课堂点名打比方——老师按顺序叫名字,标记出勤,一个不落,不提前停,直到名单结束。

代码只有三行:

students = ["Amina", "Brian", "Njeri", "Kamau", "Wanjiku"]

for student in students:

print(f"Good morning, {student}!")

5个名字,1个循环。名单变成1万个,代码不动。Jose删掉写了一半的print语句,这种反应是我最爱这堂课的原因。

有时候你没有现成列表,只想重复执行固定次数。这时候用range():

for i in range(5):

print(f"Attempt {i + 1}")

输出Attempt 1到5。但这里有个坑——range(5)生成的是0到4,不是1到5。每届学生都会问同一个问题:为什么?

因为Python像程序员一样计数:从0开始。range(5)的意思是"给我5个数,从0起",所以是0、1、2、3、4。想要1到5,得明说:range(1, 6)。

还能按步长跳:

for km in range(0, 51, 10):

print(f"Distance covered: {km} km")

0公里、10公里……50公里,像内罗毕的matatu小巴每10公里停一站。

光打印名字不够,得干点实在的。我们升级成处理数据:

scores = [78, 45, 92, 61, 55, 88, 34, 73]

total = 0

for score in scores:

total = total + score

average = total / len(scores)

求总分、算平均,循环里做的是真正的工作。