logo
25

循环进阶

⏱️ 25分钟

循环进阶(Advanced Loops):控制“何时结束、何时兜底”

你现在可能会困惑什么

“我会写循环了,为什么还要学进阶?”

因为很多 bug 不在“会不会循环”,而在“退出时机和兜底逻辑”。

一句话定义

循环进阶是对流程控制的精细化管理:for...else、嵌套循环和搜索模板。

生活类比

找书流程:

  • 找到就停止
  • 全部找完还没找到才提示“未找到”

这就是 for...else

最小可运行例子(for...else)

nums = [1, 3, 5, 7]
target = 4

for n in nums:
    if n == target:
        print("找到")
        break
else:
    print("未找到")

嵌套循环示例

for row in range(1, 4):
    for col in range(1, 4):
        print(f"({row},{col})", end=" ")
    print()

搜索模板(建议背下来)

found = False
for item in items:
    if 条件命中:
        found = True
        break

if not found:
    print("未命中")

课堂小测(5 分钟)

  1. for...else 做用户名查找。
  2. 打印 9x9 乘法表。
  3. 在二维列表中查找目标值并输出坐标。

课堂小测参考答案与判分点

  • 参考答案方向:能写出可运行代码,并覆盖题目中的核心条件与边界输入。
  • 判分点 1(正确性):主流程结果正确,关键分支可执行。
  • 判分点 2(可读性):变量命名清晰,结构不过度嵌套。
  • 判分点 3(健壮性):对空值、类型错误或异常输入有基础保护。

迁移任务(课后)

写一个“库存检索器”:

  • 输入商品二维表
  • 找到目标 SKU 后输出位置并停止
  • 找不到输出提示

本节验收标准

你能独立做到:

  • 解释 for...else 的触发条件
  • 写出可维护的嵌套循环
  • 用模板完成“搜索-命中-退出”流程

常见报错与调试步骤(新手版)

  • 报错看不懂:先读最后一行错误类型(如 TypeErrorNameError),再回到对应代码行定位。
  • 不确定变量值:在关键位置临时 print(变量, type(变量)),先确认数据是否符合预期。
  • 改了代码却没生效:确认文件已保存、运行的是当前文件、终端环境(venv)是否正确。

常见误区

  • 误区:以为 for...elseelse 每次都会执行。

  • 正解:只有未被 break 打断时才执行。

  • 误区:嵌套过深仍强行一口气写完。

  • 正解:超过两层建议拆函数。