TheZTHEZ / UNDERSTANDING FIRST
Python 入门入门20 分钟阅读

循环结构:把重复交给程序

掌握 for、range 与 while,理解累计变量和终止条件。

在浏览器中练习 →进度只保存在本机。

学习目标

  • 用 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. 第 1 行初始化累计量,只执行一次。
  2. 第 2 行让 day 依次取 1、2、3。
  3. 第 3 行每轮更新 total,依次成为 1、3、6。
  4. 第 4 行每轮输出当前编号。
  5. 第 5 行在 for 结束后输出总量 6。
  6. 第 6 行设置倒计时起点 2。
  7. 第 7 行每轮检查 count 是否大于 0。
  8. 第 8 行输出当前倒计时。
  9. 第 9 行把 count 减 1,最终使条件为假。
  10. 第 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,各占一行。检查循环结束后的变量能帮助确认终止条件。

换个角度理解

像逐张处理一叠收据:拿下一张,读取金额,加到总账,重复直到收据取完。总账不能每拿一张就清零。

STEP 01取得下一个元素
STEP 02绑定循环变量
STEP 03执行循环体后再取

循环把相同操作与变化的数据分开,减少复制代码。把 total = 0 放在循环外,是为了保留之前已经累计的结果。

动手观察:一步一步执行

这是当前知识点的独立教学示例,不是本课所有 Python 语法的模拟。修改参数、预测结果,再按下一步验证。完整语言练习使用可信代码运行器。

EXECUTION / 可操作的程序状态

把每一步,看明白

本地受限解释器
参数改变所选示例的数值;执行从头开始。

变量与作用域

输出

每步显示该语句求值后的快照;第 0 步尚未执行。条件行显示判断结果,函数调用单独显示进入与返回。自动播放可随时暂停,默认不会启动。

CHECK YOUR UNDERSTANDING

自己判断,才知道哪里没懂

先选答案再核对。答错会提供原因和补学方向,不影响课程完成进度。

基础 range(1, 4) 依次产生哪些数?

应用 循环累加时,total = 0 通常应放在哪里?

迁移 total = 0;依次加上 range(3) 的值,最终 total?

尚未提交练习。知识掌握度和学习进度分别记录。

把你卡住的代码或错误交给理解引擎 →

这一节,你理解到哪里了?

这是你的自我反馈,与练习估计、课程进度分别记录。

本文为TheZ原创教学内容。正文采用 CC BY-NC-SA 4.0,代码采用 MIT 许可。请尊重署名与授权范围。