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

Python 流程控制:if-else 條件判斷、for 迴圈、while 迴圈 (新手教學)

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

  • if-else 條件判斷: 根據條件是否成立 (True 或 False) 來決定執行哪個程式碼區塊。
  • 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):


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)

搭配 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.")
注意事項:
  • 如果在迴圈中修改正在迭代的串列,可能會導致不可預期的結果。如果需要修改,建議使用串列的拷貝或建立一個新的串列。
  • zip 以最短的iterable為主。

迭代字典


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

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

for key in my_dict.keys():
    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}")

3. while 迴圈

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

基本語法:


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

count = 0
while count < 5:
    print(count)
    count += 1  # 重要:更新條件,避免無限迴圈
注意事項:
  • 務必確保 while 迴圈的條件最終會變為 False,否則會導致無限迴圈 (程式永遠不會停止)。

breakcontinue

break: 立即跳出迴圈 (結束整個迴圈)。

continue: 跳過本次迴圈的剩餘程式碼,直接進入下一次迴圈。


# break 範例
for i in range(10):
    if i == 5:
        break  # 當 i 等於 5 時,跳出迴圈
    print(i)  # 0, 1, 2, 3, 4

# continue 範例
for i in range(5):
    if i == 2:
        continue  # 當 i 等於 2 時,跳過本次迴圈
    print(i)  # 0, 1, 3, 4

else 子句 (for/while)

Python 的 forwhile 迴圈可以有一個可選的 else 子句。 else 子句中的程式碼會在迴圈「正常結束」時執行 (也就是沒有遇到 break 語句)。


# for...else
for i in range(5):
    if i == 10:
        break
    print(i)
else:
    print("迴圈正常結束")  # 會執行,因為沒有遇到 break

# while...else
count = 0
while count < 5:
    if count == 7:
        break
    print(count)
    count += 1
else:
    print("迴圈正常結束")  # 會執行,因為沒有遇到 break
使用情境: else 子句常用於檢查迴圈是否「順利完成」(沒有被中斷)。

巢狀迴圈 (Nested Loops)

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


for i in range(3):
    for j in range(2):
        print(f"({i}, {j})")
# 輸出:
# (0, 0)
# (0, 1)
# (1, 0)
# (1, 1)
# (2, 0)
# (2, 1)

總結

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

張貼留言

較新的 較舊