While
迴圈 (While Loop)
While Loop (迴圈) 是 Python 中一種重要的流程控制結構,它允許你重複執行一段程式碼,直到指定的條件為假 (False) 為止。 當你無法預先確定需要重複執行的次數時,While Loop 就非常有用。 本文將詳細介紹 Python While Loop 的基本用法、常見案例以及 Break 和 Continue 的使用。
📜 While Loop 基本語法
While Loop 的基本語法如下:
while 條件:
# 執行程式碼
當 條件
為真 (True) 時,執行程式碼
部分會被重複執行。當 條件
為假 (False) 時,迴圈就會停止。
範例:
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)
遊戲迴圈是遊戲開發中最重要的部分之一。 它負責處理用戶輸入、更新遊戲狀態和渲染遊戲畫面。 遊戲迴圈通常是一個無限迴圈,直到遊戲結束才會停止。
game_running = True
while game_running:
# 處理用戶輸入 (例如:pygame.event.get())
# 更新遊戲狀態 (例如:角色移動、物理計算)
# 渲染遊戲畫面 (例如:pygame.display.flip())
# 檢查遊戲是否結束 (例如:玩家生命值為零)
if 遊戲結束條件: # 這裡用中文表示一個判斷條件
game_running = False
print("遊戲結束")
這個偽代碼展示了遊戲迴圈的基本結構。迴圈會不斷執行,處理遊戲邏輯,直到 遊戲結束條件
變為真。
2. 輸入驗證
While Loop 經常用於驗證用戶輸入。 程式會持續要求用戶輸入,直到用戶輸入符合要求的格式。
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
語句用於立即終止包含它的最內層 while
或 for
迴圈。 當 break
語句被執行時,程式會跳出迴圈,並執行迴圈後面的程式碼。
範例:
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
語句用於跳過當前迴圈迭代中剩餘的程式碼,並直接開始下一次迴圈的迭代。
範例:
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
語句的條件最終會被滿足。
無限迴圈的例子 (應避免):
# 錯誤示範:無限迴圈
# count = 0
# while count < 5:
# print("這會無限循環,因為 count 沒有被改變!")
# # 缺少 count += 1 或其他改變 count 的操作
✨ 總結
While Loop 是 Python 中一個非常強大的工具,它賦予你在條件未知或動態變化的情況下重複執行程式碼塊的能力。 掌握 While Loop 的基本語法、了解其適用於遊戲迴圈等不確定次數迭代的場景,並熟練運用 break
和 continue
來精細控制迴圈流程,將大大提升你編寫複雜和響應式程式的能力。 記住,始終要注意迴圈的終止條件,以避免無限迴圈。