学习目标
- 用 for 遍历有限序列。
- 理解 range 的终点不包含规则。
- 用 while 编写能够终止的重复步骤。
概念解释
for 把一组数据逐个交给循环变量,再执行循环体。range(1, 4) 依次产生 1、2、3,不包含终点 4。range 的起点、终点与步长需要对应任务;只写 range(3) 则从 0 开始,产生 0、1、2。
累计变量要在循环外初始化。total = 0 表示先没有累计量;每次用 total = total + day 把当前数加入已有总量。如果在循环内部每次设 total = 0,就会丢掉前面的累计结果。用一张“当前变量值”小表跟踪前两轮,通常比盲目看代码更容易理解。
while 在每轮开始检查条件,条件为真才执行。循环体必须让条件有机会变为假,或通过明确的 break 退出。不要把未知终止条件的循环提交到运行器。本网站会在 8 秒后终止超时执行,但编写能结束的逻辑才是正确办法。
完整代码示例
将下面代码完整复制到运行器,先运行原例,再一次只修改一个地方。
total = 0
for day in range(1, 4):
total = total + day
print("第", day, "天")
print("编号合计:", total)
count = 2
while count > 0:
print("倒计时:", count)
count = count - 1
print("结束")
逐行代码讲解
- 第 1 行初始化累计量,只执行一次。
- 第 2 行让 day 依次取 1、2、3。
- 第 3 行每轮更新 total,依次成为 1、3、6。
- 第 4 行每轮输出当前编号。
- 第 5 行在 for 结束后输出总量 6。
- 第 6 行设置倒计时起点 2。
- 第 7 行每轮检查 count 是否大于 0。
- 第 8 行输出当前倒计时。
- 第 9 行把 count 减 1,最终使条件为假。
- 第 10 行在循环正常结束后执行。
实际运行结果
以下输出已在 Python 3 中执行核对。代码和输出分别放在不同区域;不要把输出当作代码。
第 1 天
第 2 天
第 3 天
编号合计: 6
倒计时: 2
倒计时: 1
结束
常见错误
- while 内忘记改变条件变量,可能出现无限循环;使用停止按钮后检查更新步骤。
- 误以为 range(1, 4) 包含 4,产生差一错误。
- 把累计量初始化放进循环体,导致每轮重新开始。
实践练习
用 for 计算 1 到 5 的和;再用 while 输出 3、2、1。先用手工表格记录每轮变量值,确保总和为 15,倒计时能结束。
先独立作答再查看参考。能运行还不够,请解释结果为什么正确。
参考答案
total = 0
for number in range(1, 6):
total = total + number
print(total)
count = 3
while count > 0:
print(count)
count = count - 1
assert total == 15
assert count == 0
输出为 15、3、2、1,各占一行。检查循环结束后的变量能帮助确认终止条件。
换个角度理解
像逐张处理一叠收据:拿下一张,读取金额,加到总账,重复直到收据取完。总账不能每拿一张就清零。
循环把相同操作与变化的数据分开,减少复制代码。把 total = 0 放在循环外,是为了保留之前已经累计的结果。
动手观察:一步一步执行
这是当前知识点的独立教学示例,不是本课所有 Python 语法的模拟。修改参数、预测结果,再按下一步验证。完整语言练习使用可信代码运行器。
把每一步,看明白
变量与作用域
输出
每步显示该语句求值后的快照;第 0 步尚未执行。条件行显示判断结果,函数调用单独显示进入与返回。自动播放可随时暂停,默认不会启动。
自己判断,才知道哪里没懂
先选答案再核对。答错会提供原因和补学方向,不影响课程完成进度。
尚未提交练习。知识掌握度和学习进度分别记录。
这一节,你理解到哪里了?
这是你的自我反馈,与练习估计、课程进度分别记录。