CAICP-E · Python 编程基础
把重复交给电脑
用 for 和 range 做一遍又一遍的事。
这一节要学会什么
#what有些事情要做很多遍。不要把同一行复制十次。
用 循环。这节课学 for ... in ...。
还会用 range() 排出一串整数。
循环体也要缩进。和 if 一样:冒号开门,下一行往里站。
你会让电脑把一句话抄 3 遍。会把 1 加到 n。
这一课不学 while。次数先算得清,就用 for。
喊三遍也累,喊三十遍更累
#hook老师说:把「认真听讲」抄 3 遍。手会酸。 抄 30 遍更酸。
电脑却不怕重复。你告诉它:做 3 次。 它就老老实实做 3 次。

如果觉得有点难 先记住
range(3)是 0、1、2。 从 0 开始,不到 3。 循环跑 3 圈。如果已经会了 用 for 抄一句话 3 遍。 再把 1 到 5 加起来。 还会用
range(0, 10, 2)跳着走。 也可以在循环里加 if,只打印偶数。
for:对每个都做一次
#explore-forfor 的意思是:对每一个。
先看最具体的小目标:同一句话,说三遍。
for i in range(3):
print("认真听讲")会打印三行「认真听讲」。range(3) 会排出 3 个数。
每排到一个,循环体就跑一次。

i 是循环变量。每一轮换一个值。
先不关心它是几,只关心跑了几圈。
for 后面也要冒号。循环体要缩进 4 格。
忘了冒号或忘了缩进,都会报错。
也可以一个字一个字走过一句话。
for ch in "你好":
print(ch)会先打印「你」,再打印「好」。ch 每一轮拿一个字。
range:排出一串整数
#explore-range不想手写一长串数字。就用 range。
for n in range(3):
print(n)会打印 0、1、2。注意:没有 3。
range(3) 从 0 开始。一共 3 个数。
停在 3 的前面。

想从 1 打到 5:
for n in range(1, 6):
print(n)range(1, 6) 包含 1。不包含 6。
左边进得去,右边进不去。
只要重复次数,不关心数字:
for i in range(4):
print("加油")会打印 4 行加油。
记住分工:
range 负责排队。for 挨个做。
如果已经会了 还可以跳着走。第三个参数是步长。
python for n in range(0, 10, 2): print(n)会打印 0、2、4、6、8。每次加 2。
循环里也能累加
#explore-sum循环不只会打印。还可以把结果攒起来。
先准备一个空盒子 total = 0。每一圈把当前的数加进去。
total = 0
for n in range(1, 6):
total = total + n
print(total)1 到 5 加起来是 15。print(total) 没有缩进。
所以等循环全部跑完,才打印一次。

如果把 print 缩进到 for 里面。每一圈都会打印一次当时的合计。 那是另一回事。先把盒子放在循环外面,最不容易乱。
小项目:抄三遍、求和
#explore-even抄三遍,改成你的句子。
for i in range(3):
print("我能写程序")再求和。把 6 改成别的数,就是 1 加到 n。 注意:要加到 n,range 的右边写成 n + 1。
n = 5
total = 0
for x in range(1, n + 1):
total = total + x
print(total)如果已经会了 循环体里可以再写
if。它在 for 里面,再缩一层。python for n in range(1, 11): if n % 2 == 0: print(n)会打印 1 到 10 里的偶数。
% 2 == 0表示能被 2 整除。
for 问的是:每一个都做一遍。次数事先不清楚、要一直问到某个条件,下一课再用 while。
这节课我学会了
#review记住这些:
for ... in ...对每个值做一次。- 循环体要缩进,冒号不能少。
range(n)产生 0 到 n-1,一共 n 个。range(a, b)从 a 到 b-1,右边那个数进不去。- 循环里可以把数加进一个盒子。
试着在心里跑一遍:
for i in range(3):
print("认真听讲")屏幕上会出现三行一样的话。
下一课才学 while。先把「做几遍」交给 range。
试一试
#evaluate看完就来检查一下。选错了也可以再想。
单选题
range 产生什么
range(3) 会产生哪一组整数?
单选题
循环打印几次
for i in range(4): print(「嗨」) 会打印几行?
单选题
加到几
total 从 0 开始。for n in range(1, 6): total = total + n。循环结束后 total 是?
多选题
关于 for
下列说法正确的有哪些?可以多选。
可多选
未登录时不会保存学习进度
