第 05 課 · 入門 · 19 分鐘

Python for 迴圈

對一組值重複執行同樣的工作,不用把同一行程式碼寫很多遍。

走訪range累加器

打烊時,一天的流水躺在紙條上,一杯一行。迴圈可以一行行讀,可總數在第一杯之前就得有個起點。累加器一開始應該裝什麼?

迴圈讓一段程式碼處理很多值。for 迴圈從可迭代物件中依次取出每一項,賦給迴圈變數,然後執行一次迴圈體。報表、清洗和資料處理都離不開它。 你還會區分累加器和內建聚合。

走訪一個集合

迴圈變數會依次接收集合中的每個值。變數名應該描述元素本身,而不是索引。迴圈體需要縮進,每取出一個元素就執行一次。

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

每個訂單列印一行

range 產生數字

range(stop) 從 0 開始,到 stop 之前結束。range(start, stop) 從 start 開始。range(start, stop, step) 按 step 跳過。range 是惰性的:迴圈需要時才產生值。

print(list(range(3)))
print(list(range(2, 5)))
print(list(range(0, 10, 2)))

三種 range 寫法

累加一個結果

在迴圈之前建立累加器,在迴圈內部更新它,迴圈結束後再使用。累加器可以是數字、列表或字串。

prices = [4.5, 6.0, 3.25]
total = 0
for price in prices:
    total += price
print(f"總計:{total:.2f} 元")

用迴圈求和

讓迴圈攜帶狀態

累加器是跨迭代攜帶結果的變數。迴圈前初始化,迴圈內更新,迴圈後使用。如果更新寫在迴圈外,只會保留最後一次的值。

prices = [4.5, 3.0, 6.25]
total = 0
count = 0
for price in prices:
    total += price
    count += 1
print(count, round(total, 2), round(total / count, 2))

一個迴圈,三個匯總值

只做聚合時,優先用內建函式

如果迴圈只是求和、計數、最大值或一個是/否判斷,內建函式通常更清楚。any() 遇到第一個真值就停止,all() 遇到第一個假值就停止。需要多個結果或自定義控制流時,再用迴圈。

prices = [4.5, 3.0, 6.25]
print(sum(prices), len(prices), max(prices), min(prices))
print(any(price > 6 for price in prices))
print(all(price > 0 for price in prices))

選擇更清楚的聚合方式

用 enumerate 保留行號

enumerate() 同時給出元素和位置,跳過一行時錯誤資訊也不會錯位。用 start 參數對齊人類習慣的行號。不要在走訪列表時刪除元素;建立新列表,或者走訪副本。在收據專案裡,行號正是錯誤資訊有用的原因。

lines = ["Latte|2", "", "Tea|1"]
for line_no, line in enumerate(lines, 1):
    if not line:
        continue
    name, qty = line.split("|")
    print(line_no, name, int(qty))

跳過空行,位置仍然準確

本課要點

  • for item in items 會逐個存取每個值。
  • range(stop) 不包含 stop;range(start, stop) 包含 start。
  • 累加器必須在迴圈開始前初始化。
  • 縮進決定哪些程式碼屬於迴圈體。
  • 累加器讓迴圈變成匯總;簡單聚合優先用內建函式。
  • enumerate(..., start=1) 讓錯誤資訊裡的行號和人類看到的一致。

常見錯誤

  • 把累加器建立在迴圈內部,導致每次迭代都被重置。
  • 以為 range(5) 會包含 5。
  • 一邊走訪列表一邊修改它,導致漏掉元素。
  • 把累加更新寫錯縮進層級,只保留最後一次結果。
  • 一邊走訪列表,一邊刪除其中的元素。
輪到你

走訪三個價格,把它們累加到 total,並列印保留兩位小數的總價。

動手試試

改改變數、先預測輸出,再執行程式碼。第一次點擊「執行程式碼」時會下載 Python 執行時,可能需要幾秒鐘。

瀏覽器內 Python本機執行 · 無需帳號
首次執行會從 CDN 下載 Pyodide。修改後點擊「執行程式碼」。

練習本課

12 道題,作答後立即看到解釋。

查看 12 道題答案開始練習
← 條件判斷列表 →