Python 流程控制:if-else 條件判斷、for 迴圈、while 迴圈

Python 流程控制:if-else 判斷、for 迴圈、while 迴圈完全指南 - CCC Blog
一個分岔路口的指示牌,象徵程式設計中的流程控制與決策。

在 Python 程式設計中,流程控制 (flow control) 決定了程式碼執行的順序。透過流程控制,您可以讓程式根據不同的條件執行不同的程式碼區塊,或者重複執行某些程式碼區塊。

Python 提供了三種主要的流程控制結構:

  • if-else 條件判斷: 根據條件是否成立 (TrueFalse) 來決定執行哪個程式碼區塊。
  • for 迴圈: 重複執行程式碼區塊,通常用於遍歷 (iterate) 一個序列 (例如串列、元組、字串) 或產生一系列數字。
  • while 迴圈: 當條件為真 (True) 時,重複執行程式碼區塊。

本文將詳細介紹這三種流程控制結構的用法,並提供豐富的範例程式碼。

1. if-else 條件判斷

if-else 語句用於根據條件的真假來執行不同的程式碼區塊。

基本語法

if 條件:
    # 如果條件為 True,執行這個程式碼區塊
    # ...
else:
    # 如果條件為 False,執行這個程式碼區塊
    # ...

重要觀念

  • if 後面要加上條件 (通常是比較運算或邏輯運算)。
  • 條件後面的冒號 (:) 不能省略。
  • ifelse 下方的程式碼區塊必須縮排 (通常是 4 個空格)。
  • else 是可選的 (可以只有 if,沒有 else)。

單向 if (只有 if)

age = 20
if age >= 18:
    print("已成年")

雙向 if-else

score = 75
if score >= 60:
    print("及格")
else:
    print("不及格")

多向 if-elif-else

當您有多個互斥的條件需要判斷時,可以使用 if-elif-else 結構。

score = 85
if score >= 90:
    print("優秀")
elif score >= 80:
    print("良好")
elif score >= 70:
    print("普通")
elif score >= 60:
    print("及格")
else:
    print("不及格")

注意事項:

  • elif 是 "else if" 的縮寫,可以用來檢查多個條件。
  • elifelse 都是可選的,但 else 最多只能有一個,且必須放在最後面。
  • Python 沒有 switch-case 語句。

2. for 迴圈

for 迴圈用於重複執行程式碼區塊,通常用於遍歷序列 (例如串列、元組、字串、字典的key) 或產生一系列數字。

基本語法

for 變數 in 可迭代物件:
    # 對每個元素執行的程式碼區塊
    # ...

遍歷序列 (list, tuple, string)

# 遍歷串列
fruits = ['apple', 'banana', 'orange']
for fruit in fruits:
    print(fruit)

# 遍歷元組
my_tuple = (1, 2, 3)
for num in my_tuple:
    print(num)

# 遍歷字串
message = "Hello"
for char in message:
    print(char)

使用 range() 產生數字序列

range(start, stop, step)

  • start: 起始值 (預設為 0)
  • stop: 結束值 (不包含此值)
  • step: 步長 (預設為 1)
for i in range(5):  # 0, 1, 2, 3, 4
    print(i)

for i in range(1, 6):  # 1, 2, 3, 4, 5
    print(i)

for i in range(1, 10, 2):  # 1, 3, 5, 7, 9
    print(i)

for i in range(5, 0, -1): # 5, 4, 3, 2, 1
    print(i)

迭代字典

my_dict = {"a": 1, "b": 2, "c": 3}

# 迭代 keys (預設行為)
for key in my_dict:
    print(key)

# 迭代 values
for value in my_dict.values():
    print(value)

# 迭代 items (key-value pairs)
for key, value in my_dict.items():
    print(f"{key}: {value}")

搭配 enumerate() 與 zip()

使用 enumerate() 可以在迴圈中同時獲得索引和值。

fruits = ['apple', 'banana', 'orange']
for index, fruit in enumerate(fruits):
    print(f"索引: {index}, 值: {fruit}")

使用 zip() 可以將多個序列打包,進行平行迭代。

names = ['Alice', 'Bob', 'Charlie']
ages = [30, 25, 35]
for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")

3. while 迴圈

while 迴圈用於當條件為真 (True) 時,重複執行程式碼區塊。

基本語法

while 條件:
    # 當條件為 True 時,重複執行的程式碼區塊
    # ...

# 範例
count = 0
while count < 5:
    print(count)
    count += 1  # 更新條件變數,避免無限迴圈

警告:務必確保 while 迴圈的條件最終會變為 False,否則會導致「無限迴圈」,程式將永遠不會停止。

迴圈的進階控制

break 和 continue

  • break: 立即跳出並結束整個迴圈。
  • continue: 跳過本次迴圈的剩餘程式碼,直接進入下一次迭代。
# break 範例: 找到第一個符合條件的就停止
for i in range(10):
    if i == 5:
        print("找到 5,迴圈結束")
        break
    print(i)  # 輸出 0, 1, 2, 3, 4

# continue 範例: 跳過特定條件
for i in range(5):
    if i == 2:
        print("跳過 2")
        continue
    print(i)  # 輸出 0, 1, 3, 4

迴圈的 else 子句

Python 的 forwhile 迴圈可以有一個可選的 else 子句。此區塊的程式碼會在迴圈「正常結束」(即沒有被 break 中斷) 時執行。

# for...else 範例
for i in range(5):
    print(i)
else:
    print("迴圈正常結束") # 會執行

# while...else 範例
count = 0
while count < 5:
    print(count)
    count += 1
else:
    print("迴圈正常結束") # 會執行

巢狀迴圈 (Nested Loops)

迴圈內可以包含另一個迴圈,稱為巢狀迴圈。常見的應用是處理二維資料 (例如矩陣、表格)。

# 產生九九乘法表
for i in range(1, 4): # 外層迴圈
    for j in range(1, 4): # 內層迴圈
        print(f"{i} * {j} = {i*j}")

總結

Python 的流程控制結構 (if-elseforwhile) 提供了強大的方式來控制程式碼的執行流程。掌握這些結構的用法,並善用 breakcontinueelse 子句,是 Python 程式設計的關鍵技能。

較新的 較舊