課程重點 · 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 道迴圈題,附答案和解釋。

打開練習

繼續閱讀: