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)跟踪累加器
你的练习清单
- 写语法前先说出这是哪个模式。
- 累加器在循环之前初始化。
- 检查 range 边界:stop 不包含。
- 属于循环的每一行都要缩进。
常见问题
为什么循环只打印了最后一个值?
print 可能写在循环外面,或者结果变量被反复覆盖而不是累加。检查缩进和初始值。
什么时候用 while?
不知道要重复多少次时用 while,例如一直读取直到输入合法。遍历集合或已知范围时,for 通常更清楚。
一定要用列表推导式吗?
不需要。先把循环写对。只有循环足够简单、推导式一眼能读懂时,才考虑缩短。
练习循环
12 道循环题,附答案和解释。
继续阅读: