Skip to content

While 迴圈 (While Loop)

While Loop (迴圈) 是 Python 中一種重要的流程控制結構,它允許你重複執行一段程式碼,直到指定的條件為假 (False) 為止。 當你無法預先確定需要重複執行的次數時,While Loop 就非常有用。 本文將詳細介紹 Python While Loop 的基本用法、常見案例以及 Break 和 Continue 的使用。

📜 While Loop 基本語法

While Loop 的基本語法如下:

python
while 條件:
    # 執行程式碼

條件 為真 (True) 時,執行程式碼 部分會被重複執行。當 條件 為假 (False) 時,迴圈就會停止。

範例:

python
count = 0
while count < 5:
    print(f"Count is: {count}")
    count += 1

輸出:

Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4

在這個例子中,count 從 0 開始,只要 count 小於 5,迴圈就會繼續執行。 每次迴圈執行時,會印出 count 的值,並將 count 加 1。 當 count 達到 5 時,條件 count < 5 變為假,迴圈停止。

🤔 何時使用 While Loop?

While Loop 適用於以下情況:

  • 當你不知道迴圈需要執行多少次時。 例如,等待用戶輸入,直到用戶輸入正確的指令。
  • 當你需要根據某個條件來決定是否繼續執行迴圈時。 例如,在遊戲中,只要遊戲還沒有結束,迴圈就繼續執行。

💡 常見應用場景

While Loop 的一個典型應用是在執行時間不確定的持續性任務中,例如遊戲主迴圈 (Game Loop) 或事件處理迴圈 (Event Loop),這些迴圈會一直運行,直到特定條件(如遊戲結束或程式關閉)被觸發。

1. 遊戲迴圈 (Game Loop)

遊戲迴圈是遊戲開發中最重要的部分之一。 它負責處理用戶輸入、更新遊戲狀態和渲染遊戲畫面。 遊戲迴圈通常是一個無限迴圈,直到遊戲結束才會停止。

python
game_running = True
while game_running:
    # 處理用戶輸入 (例如:pygame.event.get())
    # 更新遊戲狀態 (例如:角色移動、物理計算)
    # 渲染遊戲畫面 (例如:pygame.display.flip())

    # 檢查遊戲是否結束 (例如:玩家生命值為零)
    if 遊戲結束條件: # 這裡用中文表示一個判斷條件
        game_running = False
print("遊戲結束")

這個偽代碼展示了遊戲迴圈的基本結構。迴圈會不斷執行,處理遊戲邏輯,直到 遊戲結束條件 變為真。

2. 輸入驗證

While Loop 經常用於驗證用戶輸入。 程式會持續要求用戶輸入,直到用戶輸入符合要求的格式。

python
while True:
    age_input = input("請輸入你的年齡:")
    if age_input.isdigit(): # 檢查輸入是否全為數字
        age = int(age_input)
        if age > 0 and age < 120: # 假設一個合理的年齡範圍
            break # 輸入有效,跳出迴圈
        else:
            print("年齡必須在 1 到 119 之間,請重新輸入。")
    else:
        print("無效的輸入,年齡必須是數字,請重新輸入。")

print(f"你的年齡是:{age}")

⚙️ Break 和 Continue 語句

Break

break 語句用於立即終止包含它的最內層 whilefor 迴圈。 當 break 語句被執行時,程式會跳出迴圈,並執行迴圈後面的程式碼。

範例:

python
count = 0
while True: # 這是一個潛在的無限迴圈
    print(f"Count is: {count}")
    count += 1
    if count > 5:
        print("Count 已大於 5,執行 break。")
        break # 當 count 大於 5 時,終止迴圈
print(f"迴圈結束後的 Count 值是: {count}")

輸出:

Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5
Count 已大於 5,執行 break。
迴圈結束後的 Count 值是: 6

在這個例子中,迴圈本來會無限執行,但當 count 遞增到 6 時,條件 count > 5 成立,break 語句被執行,迴圈被終止。

Continue

continue 語句用於跳過當前迴圈迭代中剩餘的程式碼,並直接開始下一次迴圈的迭代。

範例:

python
count = 0
while count < 10:
    count += 1
    if count % 2 == 0: # 檢查 count 是否為偶數
        print(f"Count 是 {count} (偶數),執行 continue。")
        continue # 如果 count 是偶數,跳過本次迴圈的剩餘程式碼
    print(f"處理奇數 Count: {count}")

輸出:

處理奇數 Count: 1
Count 是 2 (偶數),執行 continue。
處理奇數 Count: 3
Count 是 4 (偶數),執行 continue。
處理奇數 Count: 5
Count 是 6 (偶數),執行 continue。
處理奇數 Count: 7
Count 是 8 (偶數),執行 continue。
處理奇數 Count: 9
Count 是 10 (偶數),執行 continue。

在這個例子中,當 count 是偶數時,continue 語句被執行,它會跳過 print(f"處理奇數 Count: {count}") 這行程式碼,直接進入下一次迴圈迭代。 因此,只有當 count 是奇數時,才會印出 "處理奇數 Count"。

⚠️ 小心無限迴圈!

在使用 While Loop 時,務必確保迴圈的條件最終會變成假 (False),否則就會造成無限迴圈。 無限迴圈會導致程式永遠無法停止,並可能耗盡系統資源。

避免無限迴圈的關鍵:

  • 確保迴圈條件變數在迴圈體內被修改:count += 1 這樣的語句是關鍵,它會改變 count 的值,從而影響 while count < 5 這個條件。
  • 謹慎使用 while True 如果你使用 while True,必須確保迴圈內部有 break 語句,並且該 break 語句的條件最終會被滿足。

無限迴圈的例子 (應避免):

python
# 錯誤示範:無限迴圈
# count = 0
# while count < 5:
#     print("這會無限循環,因為 count 沒有被改變!")
#     # 缺少 count += 1 或其他改變 count 的操作

✨ 總結

While Loop 是 Python 中一個非常強大的工具,它賦予你在條件未知或動態變化的情況下重複執行程式碼塊的能力。 掌握 While Loop 的基本語法、了解其適用於遊戲迴圈等不確定次數迭代的場景,並熟練運用 breakcontinue 來精細控制迴圈流程,將大大提升你編寫複雜和響應式程式的能力。 記住,始終要注意迴圈的終止條件,以避免無限迴圈。

📚 參考資料

KF Software House