课程重点 · 8 分钟阅读

Python 循环练习:覆盖大多数初学者问题的 5 个模式

大多数初学者循环题,都是五个基本模式的变体。先认出模式,再写语法,比面对空白编辑器硬想更快。

模式 1:访问每个元素

当你需要每个值、不关心位置时,用 for item in items。变量名应该描述元素本身。可以打印它、转换它,或传给函数。

orders = ["拿铁", "摩卡", "茶"]
for order in orders:
    print(order)

遍历

模式 2:重复固定次数

range(stop) 产生 0 到 stop - 1。range(start, stop) 可以指定起点。range(start, stop, step) 按步长跳过。想看具体值时,把 range 转成 list。

print(list(range(3)))
print(list(range(2, 6)))
print(list(range(0, 6, 2)))

三种 range 写法

模式 3:累加一个总数

在循环前创建累加器,在循环中更新,循环结束后使用。这个模式适用于求和、计数或收集结果。最常见的错误是把累加器初始化放在循环里面。

prices = [4.5, 6.0, 3.25]
total = 0
for price in prices:
    total += price
print(total)

累加

模式 4 和 5:筛选与构建

筛选只保留部分元素;构建把结果收集起来。两者都在循环里使用 if 或 append。先把普通循环写对,再考虑用推导式缩短。

prices = [4.5, 6.0, 3.25]
expensive = []
for price in prices:
    if price >= 4:
        expensive.append(price)
print(expensive)

筛选到新列表

循环调试清单

循环不符合预期时,按顺序检查四件事:初始值、缩进、边界和更新。在循环前后各打印一次累加器。结果一直是 0,可能是循环体没执行;增长太快,可能是更新多执行了一次。

total = 0
for n in range(1, 4):
    total += n
    print("循环内", n, total)
print("循环后", total)

跟踪累加器

你的练习清单

常见问题

为什么循环只打印了最后一个值?

print 可能写在循环外面,或者结果变量被反复覆盖而不是累加。检查缩进和初始值。

什么时候用 while?

不知道要重复多少次时用 while,例如一直读取直到输入合法。遍历集合或已知范围时,for 通常更清楚。

一定要用列表推导式吗?

不需要。先把循环写对。只有循环足够简单、推导式一眼能读懂时,才考虑缩短。

练习循环

12 道循环题,附答案和解释。

打开练习

继续阅读: