CAICP-E · Python 编程基础
一直做到停
while、break、continue。每一圈都要让条件有机会变假。
这一节要学会什么
#what还没到站就一直坐
#hook坐校车时,不到学校就继续坐。你事先不一定知道要坐几站。 只知道:到了没有。
吃饭也一样。盘子里还有,就再吃一口。 空了才停。
密码一直问,直到答对。也不知道要问几回。
这就是「条件还成立,就继续」。适合用 while。

如果觉得有点难 先写一个会自己停下来的 while。 每一圈都让计数变大。 想清楚:什么时候变成假?
如果已经会了 写「一直问,直到答对」。 while 也可以带 else。正常跑完才走 else,被 break 打断就不走。 可以想成:坐到终点才发奖,中途拉铃就没有。
pass第 8 课见过,循环里同样只是占位子。
while:条件真就继续
#explore-whilewhile 后面写条件。条件为真,就跑循环体。
跑完再回来问条件。
n = 1
while n <= 3:
print(n)
n = n + 1会打印 1、2、3。每一圈 n 变大。
变成 4 以后,条件为假,停下。

忘记改 n 会怎样?
n = 1
while n <= 3:
print(n)n 一直是 1。条件一直真。
程序可能一直打印。这叫死循环。
写 while 一定要想:什么时候变假?哪一行让它慢慢靠近终点?
while 也要冒号和缩进。和 if、for 一样。
盘子空了才停:
rice = 3
while rice > 0:
print("吃一口")
rice = rice - 1
print("盘子空了")每一口少 1。减到 0,循环停。 最后那句没有缩进,总会出现。

和 for 怎么选?知道要做几遍,用 for。
一直做到某个条件,用 while。
break 和 continue
#explore-breakbreak 表示:立刻离开循环。整段路程结束。
n = 1
while n <= 10:
if n == 4:
break
print(n)
n = n + 1打印 1、2、3。到 4 就跳出。 后面的 5 到 10 都不做。

continue 表示:这一圈别做完了。直接进入下一圈。
n = 0
while n < 5:
n = n + 1
if n == 3:
continue
print(n)会打印 1、2、4、5。3 被跳过了。

注意:continue 前要先改条件。上面先 n = n + 1,再决定跳不跳。
不然可能永远停在这一圈。
for 里也能用 break 和 continue。意思相同。
一直问到答对,也可以用 break:
while True:
ans = input("3+5=? ")
if ans == "8":
print("对了")
break
print("再想想")while True 条件一直真。全靠答对以后 break 才停。
这是「一直问,直到正确」的一种写法。
小项目:问到对、坐到站、吃到空
#explore-until先做口算门。答对才停。
ans = ""
while ans != "8":
ans = input("3+5=? ")
print("对了")不知道要问几回。所以用 while,不用 for。
再做校车。站数可以数,但停不停看「到了没有」。
stop = 0
at_school = False
while not at_school:
stop = stop + 1
print("到第", stop, "站")
if stop == 4:
at_school = True
print("学校到了")到第 4 站,条件变假,下车。
盘子里还有就吃:
rice = 3
while rice > 0:
print("吃一口")
rice = rice - 1
print("盘子空了")每一口少 1。减到 0,循环停。
循环套循环,下一课再排格子。先让这一圈自己会停。
这节课我学会了
#review记住这些:
while:条件真就重复。每一圈要让条件有机会变假。- 次数明确用
for。一直问到某个条件用while。 break:整段循环结束。continue:跳过本圈剩下的句子。
试着在心里跑一遍:
n = 1
while n <= 2:
print(n)
n = n + 1打印 1 和 2。变成 3 后停下。
下一课才把循环套起来。先坐到站再下车。
试一试
#evaluate看完就来检查一下。选错了也可以再想。
单选题
while 打印什么
n = 1。while n <= 2: print(n); n = n + 1。会打印什么?
单选题
忘记加一
n = 1。while n <= 3: print(n)。没有 n = n + 1。会怎样?
单选题
continue 跳过谁
n 从 0 开始。while n < 5: n = n + 1;如果 n == 3 就 continue;否则 print(n)。会打印什么?
多选题
循环控制
下列说法正确的有哪些?可以多选。
可多选
未登录时不会保存学习进度