條件判斷與迴圈
用 if 讓程式依照情況做不同的事,用 for 和 while 讓程式重複做同一件事,這是所有自動化的基礎。
程式開始會「做決定」
上一堂的 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,但只會印出「超支」那一句。
由上往下,遇到第一個「是」就走那條路。
常用的比較符號
| 寫法 | 意思 |
|---|---|
== |
等於(兩個等號,一個等號是放進盒子) |
!= |
不等於 |
>、< |
大於、小於 |
>=、<= |
大於等於、小於等於 |
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。
while:做到某個狀況為止
有時候你不知道要重複幾次。例如:「一直讓我輸入花費,直到我輸入 0 才停」。這時用 while:
total = 0
cost = int(input("輸入一筆花費(輸入 0 結束):"))
while cost != 0:
total += cost
cost = int(input("輸入一筆花費(輸入 0 結束):"))
print(f"總共 {total} 元")
while 的意思是「只要條件成立,就一直做」。
請 AI 幫你「逐行追蹤」
迴圈剛開始最難的,是在腦中想像「每一圈變數變成什麼」。你可以請 AI 把過程攤開給你看。
我是 Python 初學者,看不太懂下面這段迴圈每一圈發生了什麼事。請用表格列出每一圈的 day、cost、week_total 的值(假設我每天輸入 80、95、70、100、85、90、75),最後再用一句話說明這段程式在做什麼。
(貼上上面那段 for 迴圈程式)
看完 AI 的表格後,試著自己再畫一次,確認你真的懂,而不只是「看起來懂」。
把上一堂的 daily.py 升級:
- 用
for迴圈問三次花費(早餐、午餐、晚餐),算出總和。 - 用
if、elif、else依照總和印出不同的評語,門檻你自己訂。 - 加分題:改用
while,讓你可以輸入任意多筆,輸入 0 才結束。
寫完後故意拿掉一個縮排或冒號,看看錯誤訊息長什麼樣子,熟悉它,下次就不會怕。
讀完了嗎?
標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。
留言與討論
卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。