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 和安全退出。
繼續閱讀: