Python if else 條件判斷

Python if else(Python if else Statement)

這篇 Python if else 教學將帶你認識條件判斷:讓程式根據條件成立與否,執行不同的程式碼。搭配前一篇學的比較與邏輯運算子,程式就能開始「做決定」。

if else 語法

if 條件:
    條件成立時執行的程式碼
elif 另一個條件:
    上面不成立、這個成立時執行
else:
    以上都不成立時執行

說明:

關鍵字說明
if必要,條件成立(True)就執行其區塊
elif可選、可多個,前面條件都不成立時依序檢查
else可選、最多一個,所有條件都不成立時執行
冒號與縮排每個條件行結尾要冒號 :,區塊內縮排 4 格

基本用法

score = int(input("請輸入成績:"))   # 輸入 75

if score >= 90:
    print("優等")
elif score >= 60:
    print("及格")
else:
    print("不及格")

執行範例:

請輸入成績:75
及格

注意 elif 是「由上往下依序檢查,第一個成立的就執行、其餘跳過」,所以 75 分只會印出「及格」,不會再檢查後面的條件。

搭配邏輯運算子

多個條件用 andornot 組合:

age = 20
has_ticket = True

if age >= 18 and has_ticket:
    print("可以入場")
else:
    print("不能入場")

執行輸出:

可以入場

巢狀判斷與三元運算式

if 裡面可以再放 if(巢狀),但層數太多會難以閱讀,超過兩三層時應思考改寫:

member = True
amount = 1200

if member:
    if amount >= 1000:
        print("會員滿千:9 折")
    else:
        print("會員:95 折")
else:
    print("無折扣")

執行輸出:

會員滿千:9 折

簡單的二選一指派,可以用一行的三元運算式:

age = 20
status = "成年" if age >= 18 else "未成年"
print(status)

執行輸出:

成年

Python 的真假值(Truthy / Falsy)

if 的條件不一定要是 True/False,任何值都能當條件,Python 會自動判定真假:

視為 False 的值說明
FalseNone布林假值與空值
00.0數字零
""空字串
[]{}()空的 list、dict、tuple

其餘的值都視為 True。所以檢查字串是否為空,慣用寫法是:

name = input("請輸入名字:")   # 直接按 Enter(空字串)

if name:
    print(f"你好,{name}")
else:
    print("你沒有輸入名字")

執行範例:

請輸入名字:
你沒有輸入名字

常見錯誤

1. SyntaxError: invalid syntax(用了 = 而不是 ==)

if x = 5: 會直接報錯,比較相等要用 ==

2. SyntaxError: expected ‘:’

條件行結尾忘記加冒號。ifelifelse 行尾都要有 :

3. IndentationError: expected an indented block

冒號下一行忘記縮排。if 區塊內至少要有一行縮排的程式碼;如果想先留空,用 pass 佔位。

總結

if / elif / else 由上而下檢查、第一個成立的執行;行尾冒號與區塊縮排是語法必要的;Python 中 0、空字串、空容器都視為 False,這個特性讓條件可以寫得很簡潔。下一篇是第一階段的最後一個語法主題:for 與 while 迴圈。

延伸閱讀