Python while 循环练习:覆盖大多数问题的 5 个模式
大多数 while 循环题都是五个基本模式的变体。先认出模式,再写条件和更新语句,就不用凭感觉试。
模式 1:让条件逐步变为假
先设定一个值,测试它,再在循环体里修改它。更新语句不是可选项,它决定循环能否结束。运行前先预测输出。
count = 3
while count > 0:
print(count)
count -= 1
print("Liftoff")可预测的倒计时
模式 2:遇到哨兵值停止
哨兵值是一个表示“停止”的特殊值。同时检查索引和值,避免循环越过序列末尾。这和“一直读取输入,直到用户输入 quit”是同一个思路。
commands = ["start", "check", "quit", "ignored"]
i = 0
while i < len(commands) and commands[i] != "quit":
print(commands[i])
i += 1在哨兵值前停止
模式 3:用 break 提前退出
当停止条件写在循环体里更自然时,用 break。把退出语句放在触发条件附近,读者就不用到处寻找循环的出口。
prices = [3.0, 6.0, 4.5]
i = 0
while i < len(prices):
if prices[i] > 5:
print(prices[i])
break
i += 1找到第一个匹配项
模式 4:累加到上限
在循环前创建累加器,在循环内更新,在循环结束后打印。条件里的上限可以避免意外地无限累加。先手算前两次迭代,再相信结果。
total = 0
n = 1
while total < 10:
total += n
n += 1
print(total)有上限的累加
调试死循环
如果循环永远不结束,先在循环体顶部打印循环变量。检查更新是否在循环内、条件运算符是否正确,以及某个分支是否跳过了更新。然后用小输入重新运行。
n = 0
while n < 3:
print("top", n)
n += 1
print("done", n)观察变化中的值
你的练习清单
- 写条件前先说出这是哪个模式。
- 确认循环体会改变被测试的值。
- 只在确实需要提前退出时使用 break。
- 先用小输入手算一遍再运行。
常见问题
什么时候用 while 而不是 for?
重复次数未知时用 while,例如读到哨兵值或反复重试直到条件改变。已经有集合或已知范围时,用 for。
为什么我的 while 循环永远不结束?
条件可能永远不会变成假。检查计数器更新、比较运算符,以及 continue 是否跳过了更新。
break 是不好的写法吗?
不是。break 能让提前退出更清楚时就可以用。一个循环里出现太多 break,通常说明应该拆成更小的步骤。
练习 while 循环
12 道题,覆盖条件、计数器、break、continue 和安全退出。
继续阅读: