寫程式就像走人生的道路:有時候直走,有時候左轉,有時候得先停下來思考。
到目前為止,我們的 Python 程式都很「聽話」,從上到下依序執行。
但真實世界可沒這麼單純啊!想像一下:
- 考試分數 ≥ 60 就及格,否則就不及格。
- 如果天氣下雨,就帶雨傘;如果天氣晴朗,就戴墨鏡。
- ATM 取款時,如果餘額足夠,就允許領錢,否則要拒絕。
這些「根據條件做選擇」的情境,正是 if 條件判斷 的舞台。
今天,我們要讓程式學會「思考」,不再只是機械執行。
Python 的 if 條件判斷語法非常直白,像這樣:
if 條件式:
# 縮排的程式碼會在條件為 True 時執行
⚠️ 縮排在 Python 中是十分重要的,而根據 Python的協定 PEP8 的規定,
在 Python 中我們會使用「四個空格」來縮排,少一個空格都會報錯!!這部分需要非常留意喔!
score = 75
if score >= 60:
print("恭喜,你及格了!")#若score>=60,才會執行這行程式碼
這邊多新增一行沒有縮排的程式碼:(代表無論條件式是否成立,都會執行)
score = 65
if score >= 60:
print("恭喜,你及格了!")#若score>=60,才會執行這行程式碼
print("執行結束!")
這邊我也製作了有關單一分支的流程圖,對於初學者應該會比較好理解!
這邊也可以試試看自己輸入成績給程式去判斷:
score = float(input("請輸入成績:"))
if score>=60:
print("考試及格")
print("執行結束")
# 練習題 1:發燒判斷
temp = float(input("請輸入體溫:"))
if temp >= 37.5:
print("發燒了!請注意休息。")
人生不是只有「要嘛做,要嘛不做」這麼簡單。
很多時候,我們需要「兩個分支」。
if 負責「條件成立」的情況,else 則負責「條件不成立」的時候。
有了 else,就不用擔心「條件沒命中時,程式什麼都不做」。
這時候 if-else
就派上用場:
基本語法:
if 條件式:
# 語句...
# 上述條件不成立執行
else:
# 語句...
score = 55
if score >= 60:
print("恭喜,你及格了!")
else:
print("抱歉,你不及格,再接再厲!")
print("執行結束")
執行後的輸出:
抱歉,你不及格,再接再厲!
這邊一樣有做一張流程表,希望讓初學者可以更容易的了解~
接下來,我們一起來看看不同類型的練習題!
(1)發燒判斷
temp = float(input("請輸入你的體溫(°C):"))
if temp >= 37.5:
print("⚠️ 你可能發燒了,建議就醫!")
else:
print("✅ 體溫正常~")
(2)服藥提醒
take_med = input("你吃過藥了嗎?(請輸入 yes 或 no):")
if take_med == "yes":#這邊要注意,只有輸入小寫的yes,程式才會判斷條件成立!
print("✅ 很棒,記得準時吃藥!")
else:
print("⚠️ 別忘了吃藥喔!")
(3)過敏食材判斷(結合list)
allergy_list = ["花生", "牛奶", "蝦", "蛋"]
food = input("請輸入一項食材名稱:")
if food in allergy_list:
print("⚠️ 小心!您可能對此過敏")
else:
print("✅ 這項食材目前沒列在過敏名單中。")
(4)保健品花費計算
a = int(input("第一項保健品價格:"))
b = int(input("第二項保健品價格:"))
c = int(input("第三項保健品價格:"))
total = a + b + c
if total > 100:
print("💰 注意保健預算,今天總共花了", total, "元")
else:
print("✅ 花費合理,今天總共花了", total, "元")
(5)判斷奇數或偶數
num = int(input("請輸入一個整數:"))
if num % 2 == 0:
print("這是偶數!")
else:
print("這是奇數!")
基本結構:
if condition1:
statement1 for True Condition1
elif condition2 :
statement2 for True Condition2
elif condition3 :
statement3 for True Condition3
else:
statements for Each Condition False
當情況不只兩種的時候,這種結構可以處理「多選一」的情境:
score = 92
if score >= 90:
print("優等")
elif score >= 80:
print("甲等")
elif score >= 70:
print("乙等")
elif score >= 60:
print("丙等")
else:
print("丁等,不及格")
score = 92
,第一個條件 score >= 90
成立。所以會輸出「優等」,不會再去檢查 80、70、60 的條件。else
區塊。if
和 else
各只能出現一次
if
一定要在最上面,負責第一個條件檢查。else
一定要在最後面,負責「所有條件都不符合」的情況。(不需要再寫條件式了!!)else
,會直接報錯。elif
可以有很多個(也可以沒有)
elif
。if...else
。score = 95
if score >= 60:
print("及格")
elif score >= 90:
print("優等")
結果會輸出「及格」,因為 95 ≥ 60 已經符合第一個條件,Python 就不會再檢查後面的 elif
。
if
、elif
、else
對齊錯誤,導致程式無法執行。#範例:樂園門票計算機
age = int(input("請輸入年齡:"))
if age < 6:
print("票價:免費 (學齡前兒童)")
elif age < 12:
print("票價:150 元 (兒童票)")
elif age < 65:
print("票價:300 元 (成人票)")
else:
print("票價:200 元 (敬老票)")
#範例:販賣機選單
print("請選擇飲料:")
print("1. 可樂")
print("2. 綠茶")
print("3. 咖啡")
print("4. 柳橙汁")
choice = int(input("輸入選項編號 (1-4):"))
if choice == 1:
print("你選擇了 可樂")
elif choice == 2:
print("你選擇了 綠茶")
elif choice == 3:
print("你選擇了 咖啡")
elif choice == 4:
print("你選擇了 柳橙汁")
else:
print("輸入錯誤,請輸入 1-4 之間的數字")
進階挑戰題:BMI健康判斷
# 提示使用者輸入身高與體重
height = float(input("請輸入身高 (公分):"))
weight = float(input("請輸入體重 (公斤):"))
# 單位轉換:公分 -> 公尺
height = height / 100
# 計算 BMI
bmi = weight / (height ** 2)
print("你的 BMI 為:", round(bmi, 2)) # 四捨五入到小數點後兩位
# 判斷 BMI 狀態
if bmi < 18.5:
print("體重過輕,多吃一點")
elif bmi < 24:
print("正常範圍,保持運動 ")
elif bmi < 27:
print("過重,注意飲食")
elif bmi < 30:
print("輕度肥胖,要開始規劃運動")
elif bmi < 35:
print("中度肥胖,建議改善生活習慣")
else:
print("重度肥胖,請務必注意健康")
「巢狀 if」指的是在一個 if
或 else
區塊裡,再寫另一個 if
判斷。
也就是說,條件判斷可以層層嵌套,只有在前一層條件成立後,才會檢查下一層的條件。
這種結構很常見於 多階段決策,例如:
if 條件A:
# 條件A成立,才會檢查條件B
if 條件B:
執行程式1
else:
執行程式2
else:
執行程式3
縮排錯誤
Python 是靠縮排決定程式區塊的。如果巢狀 if 的縮排錯誤,可能導致程式無法執行或邏輯跑掉。
過度巢狀
如果判斷條件太多層(超過 3 層),程式會變得難以閱讀與維護。
此時建議使用 邏輯運算子 (and/or) 或後面會學到的 函式 來優化。
if 與 else 的數量限制
if
可以有 1 個(必須在最前面)。elif
可以有 0 個、1 個或多個。else
最多只能有 1 個,並且必須放在最後。這些規則在巢狀結構中同樣適用。
score = int(input("請輸入分數:"))
if score >= 60:
print("及格 ✅")
if score >= 90:
print("表現優異,屬於 A 級")
elif score >= 80:
print("不錯,屬於 B 級")
else:
print("剛好過關,屬於 C 級")
else:
print("不及格 ❌,請加油")
and
、or
、巢狀 if 全部寫在一起,結果 debug 到懷疑人生。print()
看變數值,確認程式邏輯正不正確。4.結構要寫清楚、整齊
今天我們正式走完 Python 判斷式的黃金三兄弟:
if
:專門處理條件成立時的行為elif
:處理「多種可能性」,可以有零個或多個,但不能獨立存在else
:保底兜底,最多只能有一個,出現在最後同時,我們也進一步理解了 巢狀結構(nested if) —— 當一個條件裡還有更細的條件要檢查,就能用巢狀方式處理。這在處理「層層篩選」或「多重規則」時非常實用,比如:成績分級、帳號登入驗證、甚至 BMI 健康分類。
初學者最容易忽略的細節也提醒過大家了:
if
與 else
各只能用一次,但 elif
想加幾個就加幾個。IndentationError
。所以今天的重點,不只是「會寫 if-else」,更是學會「如何設計條件邏輯」。
其實我在學習這部分的時候,會覺得設計條件邏輯才是最燒腦的,因為有的時候看似寫的很完整,
但是後來會發現有一些條件是沒有想到的漏網之魚。所以要完整的規劃出條件邏輯,非常需要細心!
明天,我們將迎來 Python 資料結構的第一個大角色 —— 串列(List)!
這是 Python 世界裡的「百寶袋」,可以一次裝很多東西,隨時取用、修改、甚至排序。
明天你會學到:
len()
、append()
、remove()
…等等)如果說今天的條件判斷是「決策大腦」,
那麼明天的 List 就是「資料倉庫」。
當兩者結合起來,程式就會越來越有模樣!
哎呀~時間過很快,一下就來到Day8了!
其實每天趕稿寫文章,越寫真的越佩服IThome大神們,
因為要能完整的把篇幅架構打得清楚,真的會很燒腦~
再加上每天期限截止前,都會開始覺得是不是哪裡還可以再多補充一點,這樣的編排會不會太零散等等
(完美主義作祟哈哈哈)
不過,我也從中獲得很多成就感!即使不確定我打的文會不會飄出去!
但我相信有一天一定能幫助到需要幫助的讀者們!!!
因為我也曾經受到這版上太多大神的幫助,而我認為這就是一種「善的循環」~
我也很確定 一個月後完賽的我會很為現在的自己感到驕傲!!
⭐️這邊來回顧一下Day1-Day7的內容⭐️
【Day1】參賽宣言文(序)
【Day2】 這條蛇不會咬人:Python 的前世今生 + 安裝教學
【Day3】你的養蛇場準備好了嗎?:Python 環境安裝:Anaconda、Jupyter Notebook
【Day4】我的程式櫃子,放什麼都行──變數與資料型別
【Day5】程式會跟你對話啦:輸入 input() 與資料型別轉換
【Day6】Python 的數字 & 文字運算大補帖
【Day7】真假大對決!程式怎麼判斷世界?:關係運算子 & 邏輯運算