所有入門單元免費開放 · 課程內容持續更新中

條件判斷與迴圈

用 if 讓程式依照情況做不同的事,用 for 和 while 讓程式重複做同一件事,這是所有自動化的基礎。

第 1.4 堂約 15 分鐘

程式開始會「做決定」

上一堂的 daily.py 會幫你算三餐總和,但不管花多花少,它都只會印出一個數字。如果它能說「今天超支了!」或「今天很省喔」,是不是有用多了?

這就是條件判斷。再加上迴圈,讓程式能重複做事,你就有了自動化最核心的兩個工具。電腦最擅長的,正是「依規則判斷」和「不厭其煩地重複」。

if:如果……就……

total = int(input("今天花了多少?"))

if total > 500:
    print("今天超支了,明天省一點吧")
elif total > 300:
    print("還在合理範圍")
else:
    print("今天很省,讚!")
今天花了多少?620
今天超支了,明天省一點吧

讀法很直白:如果 total > 500,就印超支;否則,如果 total > 300,就印合理;都不是,就印很省。

Python 會由上往下檢查,遇到第一個成立的條件就執行那一段,後面的不會再看。所以輸入 620 時,雖然 620 也大於 300,但只會印出「超支」那一句。

流程圖:輸入花費後先判斷是否大於 500,是就印超支;否則判斷是否大於 300,是就印合理;否則印很省

由上往下,遇到第一個「是」就走那條路。

常用的比較符號

寫法 意思
== 等於(兩個等號,一個等號是放進盒子)
!= 不等於
>、< 大於、小於
>=、<= 大於等於、小於等於
and、or 而且、或者

冒號和縮排:新手最常卡的地方

注意 if 那一行最後有個冒號,底下的程式往右縮了 4 個空格。縮排在 Python 不是為了好看,而是告訴電腦「這幾行屬於這個 if」。

if total > 500:
print("超支了")
IndentationError: expected an indented block after 'if' statement on line 1

忘了縮排,就會看到 IndentationError。在 VS Code 裡按 Tab 鍵,它會自動幫你插入 4 個空格。

回收上一堂的伏筆:輸入不是數字怎麼辦

還記得上一堂輸入「八十五」會出現 ValueError 嗎?有了 if,我們可以先檢查再轉換。字串的 .isdigit() 會告訴你「這段文字是不是全部由數字組成」:

text = input("今天花了多少?")

if text.isdigit():
    total = int(text)
    print(f"記下來了:{total} 元")
else:
    print("請輸入阿拉伯數字,例如 85")

這樣程式就不會因為一次手滑而整個當掉。(.isdigit() 只認得正整數,對記帳的小工具來說剛剛好。)

for:把一件事重複做幾次

假設你想把一週的午餐錢加起來:

week_total = 0

for day in range(1, 8):
    cost = int(input(f"第 {day} 天的午餐花多少?"))
    week_total = week_total + cost

print(f"這週午餐一共 {week_total} 元")

range(1, 8) 會依序產生 1 到 7(注意:不包含 8)。每跑一圈,day 就換成下一個數字,縮排裡的程式也會再執行一次。

week_total = week_total + cost 的意思是「把舊的總和加上這次的金額,再放回盒子裡」。這種「累加」的寫法你會一直用到,也可以簡寫成 week_total += cost。

迴圈示意圖:week_total 從 0 開始,第 1 到第 7 天每一圈加上當天午餐錢,最後得到一週總和

while:做到某個狀況為止

有時候你不知道要重複幾次。例如:「一直讓我輸入花費,直到我輸入 0 才停」。這時用 while:

total = 0
cost = int(input("輸入一筆花費(輸入 0 結束):"))

while cost != 0:
    total += cost
    cost = int(input("輸入一筆花費(輸入 0 結束):"))

print(f"總共 {total} 元")

while 的意思是「只要條件成立,就一直做」。

請 AI 幫你「逐行追蹤」

迴圈剛開始最難的,是在腦中想像「每一圈變數變成什麼」。你可以請 AI 把過程攤開給你看。

可以這樣問 Claude

我是 Python 初學者,看不太懂下面這段迴圈每一圈發生了什麼事。請用表格列出每一圈的 day、cost、week_total 的值(假設我每天輸入 80、95、70、100、85、90、75),最後再用一句話說明這段程式在做什麼。

(貼上上面那段 for 迴圈程式)

看完 AI 的表格後,試著自己再畫一次,確認你真的懂,而不只是「看起來懂」。

行動練習

把上一堂的 daily.py 升級:

  1. 用 for 迴圈問三次花費(早餐、午餐、晚餐),算出總和。
  2. 用 if、elif、else 依照總和印出不同的評語,門檻你自己訂。
  3. 加分題:改用 while,讓你可以輸入任意多筆,輸入 0 才結束。

寫完後故意拿掉一個縮排或冒號,看看錯誤訊息長什麼樣子,熟悉它,下次就不會怕。

讀完了嗎?

標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。

卡住了?讓 AI 當你的家教複製這段提問範本,貼到 Claude 或其他 AI 工具,再補上你卡住的地方。

留言與討論

卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。

留言區即將開放。現在可以先到 GitHub 討論區 發問,或看看 交流頁 的其他管道。