学径 LearnPath

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-for

for 的意思是:对每一个。

先看最具体的小目标:同一句话,说三遍。

python
for i in range(3):
    print("认真听讲")

会打印三行「认真听讲」。range(3) 会排出 3 个数。 每排到一个,循环体就跑一次。

小朋友抄三遍,电脑一点都不累

i 是循环变量。每一轮换一个值。 先不关心它是几,只关心跑了几圈。

for 后面也要冒号。循环体要缩进 4 格。 忘了冒号或忘了缩进,都会报错。

也可以一个字一个字走过一句话。

python
for ch in "你好":
    print(ch)

会先打印「你」,再打印「好」。ch 每一轮拿一个字。

range:排出一串整数

#explore-range

不想手写一长串数字。就用 range

python
for n in range(3):
    print(n)

会打印 0、1、2。注意:没有 3。 range(3) 从 0 开始。一共 3 个数。 停在 3 的前面。

队伍是 0 1 2,3 号进不去

想从 1 打到 5:

python
for n in range(1, 6):
    print(n)

range(1, 6) 包含 1。不包含 6。 左边进得去,右边进不去。

只要重复次数,不关心数字:

python
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。每一圈把当前的数加进去。

python
total = 0
for n in range(1, 6):
    total = total + n
print(total)

1 到 5 加起来是 15。print(total) 没有缩进。 所以等循环全部跑完,才打印一次。

存钱罐一枚枚加到十五

如果把 print 缩进到 for 里面。每一圈都会打印一次当时的合计。 那是另一回事。先把盒子放在循环外面,最不容易乱。

小项目:抄三遍、求和

#explore-even

抄三遍,改成你的句子。

python
for i in range(3):
    print("我能写程序")

再求和。把 6 改成别的数,就是 1 加到 n。 注意:要加到 n,range 的右边写成 n + 1。

python
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 整除。

1 到 10 里偶数盖章

for 问的是:每一个都做一遍。次数事先不清楚、要一直问到某个条件,下一课再用 while。

这节课我学会了

#review

记住这些:

  1. for ... in ... 对每个值做一次。
  2. 循环体要缩进,冒号不能少。
  3. range(n) 产生 0 到 n-1,一共 n 个。
  4. range(a, b) 从 a 到 b-1,右边那个数进不去。
  5. 循环里可以把数加进一个盒子。

试着在心里跑一遍:

python
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

下列说法正确的有哪些?可以多选。

可多选

未登录时不会保存学习进度