我让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)
求总分、算平均,循环里做的是真正的工作。
热门跟贴