Python if文的完整指南|從條件分支的基礎到進階應用徹底解析

1. 前言

Python 以其簡潔且直觀的語法著稱,是許多程式設計初學者學習的第一門語言。其中,「條件判斷」是控制程式行為時不可或缺的元素。本章將學習 Python 中最基本的條件判斷語法「if 陳述式」。

條件判斷在 Python 中的重要性

當程式需要根據特定條件執行不同處理時,條件判斷就扮演了重要角色。Python 中的 if 陳述式是實現條件判斷的基本語法。理解它可以大大提升程式的靈活性與實用性。

if 陳述式的作用

if 陳述式會在特定條件為真時,執行指定的程式碼。透過這種結構,程式可以根據輸入或外部環境做出動態反應。

2. if 陳述式的基本語法

Python 的 if 陳述式非常簡單,即使是第一次學習程式的使用者也能輕鬆理解。本章將說明 if 的基本結構與使用方式。

基本結構

Python 中 if 陳述式的基本語法如下:

if 條件式:
    要執行的程式碼

縮排的重要性

在 Python 中,縮排(Indentation)用來表達程式碼的階層結構。if 條件為真時要執行的程式碼,必須以一個層級的縮排表示。

範例:縮排正確的情況

if 10 > 5:
    print("10 大於 5")

範例:縮排錯誤的情況

if 10 > 5:
print("10 大於 5")  # 會發生錯誤

如果縮排不正確,Python 會產生錯誤訊息,因此必須特別注意。

什麼是條件式

if 陳述式中,條件式是一個會回傳 TrueFalse 的運算式。當條件為 True 時,if 區塊內的程式碼會被執行。例如,以下程式碼會顯示訊息,因為條件成立:

if 5 == 5:
    print("條件為真")

反之,若條件不成立,則 if 區塊內的程式碼不會被執行:

if 5 != 5:
    print("這段程式碼不會被執行")
侍エンジニア塾

3. 比較運算子與邏輯運算子

在使用 Python 的 if 陳述式時,條件式的組成少不了「比較運算子」與「邏輯運算子」。本章將詳細說明這些運算子的功能與實際用法。

什麼是比較運算子

比較運算子用來比較兩個值,回傳 TrueFalse。以下是 Python 中常用的比較運算子:

運算子意思使用範例結果
==等於5 == 5True
!=不等於5 != 3True
>大於5 > 3True
<小於5 < 3False
>=大於等於5 >= 5True
<=小於等於3 <= 5True

範例:使用比較運算子的條件判斷

x = 10
if x > 5:
    print("x 大於 5")

什麼是邏輯運算子

邏輯運算子用來組合多個條件式。Python 中常用的邏輯運算子有以下三種:

運算子意思使用範例結果
and兩個條件都為 True5 > 3 and 10 > 5True
or任一條件為 True5 > 3 or 10 < 5True
not反轉條件結果not 5 > 3False

範例:使用邏輯運算子的條件判斷

x = 10
y = 20
if x > 5 and y > 15:
    print("x 大於 5,且 y 大於 15")

結合比較與邏輯運算子

if 陳述式中,結合比較與邏輯運算子可以處理更複雜的條件。

範例:結合多個條件

age = 25
income = 50000
if age > 18 and income > 30000:
    print("符合條件")

這段程式會在 age 大於 18 且 income 大於 30000 的情況下執行。

4. if-else 陳述式

除了基本的 if 陳述式外,當條件不成立時想執行其他處理,就可以使用 else 陳述式。本章將說明 if-else 的結構與使用方法。

if-else 的基本結構

if-else 陳述式的語法如下:

if 條件式:
    條件為 True 時的處理
else:
    條件為 False 時的處理

使用範例

以下是使用 if-else 的簡單範例。

範例:if-else 的應用

x = 10
if x > 5:
    print("x 大於 5")
else:
    print("x 小於或等於 5")

此程式會根據 x 的值執行不同的訊息輸出。

實用範例

if-else 常用於根據使用者輸入或狀況進行不同的處理。

範例:根據輸入值進行判斷

number = int(input("請輸入一個數字: "))
if number % 2 == 0:
    print("這是偶數")
else:
    print("這是奇數")

這段程式會根據輸入的數值判斷是偶數還是奇數。

5. if-elif-else 陳述式

當需要處理多個條件時,僅使用 if 可能會讓程式變得冗長。在這種情況下,使用 Python 的 if-elif-else 陳述式可以更有效率地處理多重條件。本章將說明其結構與使用範例。

if-elif-else 的基本結構

if-elif-else 陳述式的語法如下:

if 條件式1:
    條件式1 為 True 時的處理
elif 條件式2:
    條件式2 為 True 時的處理
else:
    以上條件皆不成立時的處理

elif 是 “else if” 的縮寫,可用來依序檢查多個條件。

使用範例

以下是 if-elif-else 的簡單範例。

範例:根據分數顯示等級

score = 85
if score >= 90:
    print("評價:A")
elif score >= 80:
    print("評價:B")
elif score >= 70:
    print("評價:C")
else:
    print("評價:D")

此範例會根據 score 的值顯示不同評價訊息。

elif 的重要性

透過 elif,條件會依序檢查,當符合其中一個條件後,後續條件將不再判斷,因此能有效處理重疊條件的情境。

範例:條件的優先順序

temperature = 30
if temperature > 35:
    print("是酷熱的天氣")
elif temperature > 25:
    print("是炎熱的天氣")
elif temperature > 15:
    print("是舒適的天氣")
else:
    print("是寒冷的天氣")

此程式碼會根據溫度顯示最先符合的條件對應的訊息。

省略 else

else 並非必須,當不需要處理所有條件的情況時可以省略。

範例:省略 else

age = 20
if age >= 18:
    print("已成年")
elif age >= 13:
    print("是青少年")

6. 巢狀的 if 陳述式

當條件更複雜時,可以使用巢狀(巢狀結構)方式撰寫 if 陳述式。本章將說明巢狀 if 的寫法與使用上的注意事項。

巢狀 if 的基本結構

巢狀 if 的語法如下:

if 條件式1:
    if 條件式2:
        條件1 和 條件2 都為 True 時執行的處理

使用範例

以下是使用巢狀 if 陳述式的範例。

範例:結合兩個條件的判斷

age = 25
income = 40000
if age > 18:
    if income > 30000:
        print("是成年人且收入充足")
    else:
        print("是成年人但收入不足")
else:
    print("是未成年人")

這段程式碼會根據年齡與收入進行條件判斷。

注意事項

過度使用巢狀結構會使程式難以閱讀。因此,建議適當使用邏輯運算子或拆分條件式來簡化程式。

範例:簡化巢狀結構

age = 25
income = 40000
if age > 18 and income > 30000:
    print("是成年人且收入充足")
elif age > 18:
    print("是成年人但收入不足")
else:
    print("是未成年人")

7. if 陳述式的簡寫(三元運算子)

在 Python 中,若是簡單的條件判斷,可以使用「三元運算子」以單行方式撰寫。本章將說明三元運算子的基本語法、使用範例與注意事項。

三元運算子的基本語法

三元運算子的語法如下:

值1 if 條件式 else 值2
  • 條件式True,則回傳 值1
  • 條件式False,則回傳 值2

使用範例

範例:判斷數值正負

x = 10
result = "正數" if x > 0 else "負數"
print(result)

上述程式會根據 x 的值顯示「正數」或「負數」。

範例:判斷最大值

a, b = 5, 10
max_value = a if a > b else b
print(f"最大值是 {max_value}")

此範例會比較 ab 的值,將較大者指定給 max_value

巢狀三元運算子

三元運算子也可以巢狀使用,但可讀性可能會降低。

範例:巢狀三元運算子

x = 0
result = "正數" if x > 0 else "負數" if x < 0 else "零"
print(result)

此程式碼會判斷 x 是正數、負數還是零。

注意事項

  • 三元運算子簡潔實用,但不適合複雜條件。
  • 若條件邏輯過多,建議使用傳統的 if-else 結構以提高可讀性。

8. 使用 if 陳述式的注意事項

在使用 Python 的 if 陳述式時,有幾個常見特性與注意點必須了解。本章整理了避免錯誤的重點。

None 與空值的判斷

在 Python 中,None、空字串、空串列等會被視為 False

範例:判斷 None

x = None
if not x:
    print("x 是 None")

範例:判斷空串列

items = []
if not items:
    print("串列是空的")

is== 的差異

  • == 比較的是「值是否相等」。
  • is 比較的是「是否為同一個物件(記憶體位置)」。

範例:is== 的差別

a = [1, 2, 3]
b = [1, 2, 3]
print(a == b)  # True(值相等)
print(a is b)  # False(不是同一個物件)

條件式的撰寫注意事項

當條件較複雜時,建議使用括號明確條件的優先順序。

範例:使用括號提升可讀性

x = 10
y = 5
if (x > 5 and y < 10) or x == 10:
    print("條件成立")

9. 總結

在這篇教學中,我們從基礎到進階學習了 Python 的 if 陳述式。以下為重點整理:

Python if 陳述式的基礎

  • if 陳述式只在條件為 True 時執行特定程式碼。
  • Python 透過縮排來區分程式結構,正確的縮排非常重要。

基本語法

if 條件式:
    要執行的程式碼

條件判斷的延伸

  • if-else 可處理條件為 False 時的情況。
  • if-elif-else 可有效處理多個條件。

範例:if-elif-else

score = 75
if score >= 90:
    print("評價:A")
elif score >= 75:
    print("評價:B")
else:
    print("評價:C")

處理複雜條件

  • 可結合比較與邏輯運算子撰寫複雜條件。
  • 使用巢狀 if 可以建立階層式條件。

範例:複雜條件式

age = 25
income = 50000
if age > 18 and income > 30000:
    print("符合條件")

活用簡寫(三元運算子)

  • 簡單條件可用三元運算子寫成一行。
  • 條件複雜時,建議使用標準 if-else 結構。

範例:三元運算子

result = "合格" if score >= 60 else "不合格"

注意事項

  • 空值與 None 在條件中會被當成 False
  • 了解 is== 的差異並正確使用。
  • 條件式過長時,使用括號提升可讀性與正確性。

下一步學習方向

掌握 if 陳述式能大幅提升程式的靈活度,接下來建議進一步學習以下主題:

  1. 迴圈與條件判斷的結合
  • 學習如何在 forwhile 迴圈中使用 if 判斷。
  1. 例外處理
  • 學會使用 try-except 結構處理程式錯誤。
  1. 函式與條件判斷
  • 學習在函式中活用條件邏輯,撰寫可重用的程式碼。

本篇教學到此結束。希望這些知識能幫助你撰寫更進階的 Python 程式,掌握條件判斷的技巧將是邁向進階開發的重要一步。