课程库 › AI 主线 › Python 第一步 › 第 5 课
循环(上)—— for:让计算机做重复的事
普通课约 50 分钟
本课导读
"把这件事重复一百遍"——人类听到会叹气,计算机听到会兴奋。循环是编程释放杠杆的地方:写 3 行代码,干 100 万件事。本课学 for 循环和它的黄金搭档 range(),以及一个贯穿整个数据世界的经典套路——累加器。
从一个偷懒的需求开始
假如要打印 5 遍"跳绳"打卡记录,你当然可以复制粘贴 5 行 print()。但如果是 500 遍呢?for 循环的写法:
拆解语法:
range(5)产生一串数字:0、1、2、3、4(注意:从 0 开始,到 5 之前结束,一共正好 5 个)for i in ...的意思是:让变量i依次变成这串数字里的每一个,每变一次,就把缩进的内容执行一遍- 缩进规则和 if 一模一样:缩进的部分属于循环,不缩进的
print("跳完收工!")只在循环全部结束后执行一次
把 range(5) 改成 range(100) 再运行——同样 2 行代码。这就是杠杆。
提示
range() 从 0 开始是编程世界的传统(以后学列表你会发现万物从 0 数起)。想要从 1 开始也行:range(1, 6) 产生 1、2、3、4、5——含头不含尾,左端点包含,右端点不包含。这个"含头不含尾"在 Python 里到处适用,现在就把它记牢。
累加器:循环世界的第一套路
循环最常干的活不是打印,而是边转圈边攒东西。经典问题:1 加到 100 等于多少?
这个模式叫累加器,三步缺一不可:
- 循环前:把储蓄罐清零(
total = 0) - 循环中:每圈往里存一笔(
total = total + n,还记得第 2 课"变量可以更新"吗) - 循环后:储蓄罐里就是答案
数学家高斯小时候心算出 5050 震惊了老师;你的程序 0.001 秒搞定——而且把 101 改成 1000001 也只是改个数字的事。
说明
新手最容易犯的错:把 total = 0 写进循环里面(缩进错了)。那样每圈都把储蓄罐倒空重来,最后只剩最后一笔。累加器必须在循环外面初始化——遇到结果不对,先检查这里。
for 不止能数数:遍历字符串
for 的本事是"把一串东西挨个过一遍",这串东西不一定是数字。字符串也是"一串"——一串字符:
注意第二段把循环和 if 组合了起来:每个字符过一遍,符合条件的才计数——这是累加器的变体(计数器),也是你第一次看到两种结构嵌套。缩进读法:if 属于 for(缩进 4 格),计数那行属于 if(缩进 8 格)。
✍️ 练习
练习 1:平方表
打印 1 到 10 每个数的平方,格式如「3 的平方是 9」。(乘方可以用 n * n,或者用新符号 n ** 2。)
💡 提示
for n in range(1, 11): 循环 10 次,循环体一行 f-string 搞定。
✅ 参考答案
for n in range(1, 11):
print(f"{n} 的平方是 {n ** 2}")
** 是乘方运算符:n ** 2 即 n 的 2 次方。
练习 2:偶数求和
计算 1 到 100 中所有偶数的和(正确答案应该是 2550)。
💡 提示
两条路:① 循环 1-100,用上一课的 n % 2 == 0 筛出偶数再累加;② 更妙——range(2, 101, 2) 的第三个参数是步长,直接只产生偶数。两种都试试。
✅ 参考答案
# 方法一:循环 + if 筛选
total = 0
for n in range(1, 101):
if n % 2 == 0:
total = total + n
print(f"偶数之和:{total}")
# 方法二:range 步长直达
total2 = 0
for n in range(2, 101, 2):
total2 = total2 + n
print(f"偶数之和:{total2}")
同一个问题多种解法很正常——方法一更通用(条件可以任意复杂),方法二更简洁(条件恰好是等差时)。
练习 3:火箭倒计时(挑战)
打印 10、9、8……1,最后打印"点火!🚀"。提示:range 的步长可以是负数。
✅ 参考答案
for n in range(10, 0, -1):
print(n)
print("点火!🚀")
range(10, 0, -1):从 10 开始,步长 -1,到 0 之前停(含头不含尾对负步长同样成立,所以最后一个是 1)。
随堂测验
1. range(5) 产生的数字是?
2. 累加器模式中,total = 0 必须写在哪里?为什么?
3. for c in "你好吗" 的循环体会执行几次?
4. 想产生 1 到 9 的所有奇数(1、3、5、7、9),下面哪个 range 正确?
本课小结
for i in range(n):写 2 行,干 n 件事;range 从 0 起、含头不含尾、可设步长- 累加器三步:圈外清零 → 圈内累加 → 圈外收获;计数器是它的变体
- for 能遍历一切"一串东西":数字串、字符串,以后还有列表
- 循环 + if 的嵌套组合,是数据处理的原子操作
下一课是循环的另一半:不知道要转多少圈时,用 while——"烧水直到开"。
划选正文任意文字可高亮、批注或加入复习卡
讨论
载入中…