1. 什麼是 Python 的 for-else 語法?
在 Python 中,有一種其他程式語言較少見的獨特語法——「for-else」。這種語法的特點是,除了正常的 for 迴圈外,還可以使用 else 區塊來執行當迴圈正常結束時的額外處理。只有當迴圈完整執行至最後一輪時,else 區塊才會被執行;如果迴圈在途中因 break 語句而中斷,則 else 區塊將被跳過。這種語法的優勢在於可以讓程式碼更加簡潔且直覺。
範例:
for i in range(5):
print(i)
else:
print("迴圈已正常結束。")
在這段程式碼中,當迴圈完整執行後,else 區塊會被執行,輸出「迴圈已正常結束。」的訊息。如果在迴圈內加入 break 語句使其提早結束,則 else 區塊將不會被執行。
2. for-else 語法的基本用法
要理解 for-else 語法的基本用法,首先需要掌握 for 迴圈的運作方式以及 break 語句的影響。通常,for 迴圈會逐一處理指定範圍內的數值或列表中的元素,但如果因某些條件需要提前終止迴圈,則可以使用 break 語句。
基本的 for-else 語法範例:
for i in range(5):
if i == 3:
break
print(i)
else:
print("迴圈已正常結束。")
在這段程式碼中,當 i == 3
時,break 語句會被執行,因此 else 區塊不會被執行。相反地,如果迴圈沒有被 break 中斷,那麼 else 區塊將會執行。透過這種結構,我們可以清楚地判斷迴圈是否有在中途被中斷。

3. for-else 語法的實用範例
for-else 語法在檢查特定條件是否滿足,或是高效處理資料搜尋時特別有用。以下的範例展示如何在列表中搜尋特定元素,若找到則中斷迴圈,若未找到則執行 else 區塊。
資料搜尋範例:
numbers = [1, 2, 3, 4, 5]
target = 3
for num in numbers:
if num == target:
print(f"{target} 已找到。")
break
else:
print(f"{target} 未找到。")
在這段程式碼中,如果找到目標數值 target,則迴圈會執行 break,這樣 else 區塊就不會被執行。反之,若 target 不在列表中,else 區塊將執行並輸出「target 未找到。」的訊息。

4. break 與 continue 的作用
在 Python 的 for 迴圈中,可以使用 break 和 continue 來控制程式的執行流程。break 用來強制結束迴圈,而 continue 則是跳過當前迴圈的剩餘程式碼,直接進入下一次迴圈。當與 for-else 語法結合使用時,需要注意一點:如果迴圈因 break 而終止,else 區塊將不會被執行,但若使用的是 continue,則 else 仍然會執行。
break 與 else 的範例:
for i in range(5):
if i == 3:
break
print(i)
else:
print("迴圈已正常結束。")
continue 與 else 的範例:
for i in range(5):
if i == 3:
continue
print(i)
else:
print("迴圈已正常結束。")
當使用 continue 時,當 i == 3
,當前迴圈的剩餘部分被跳過,但因為迴圈仍然完整執行至最後一次,else 區塊仍然會執行。

5. 不使用 for-else 語法時的比較
如果不使用 for-else 語法,要達成相同的邏輯,通常需要使用標誌變數(flag)。這種方式可以手動確認迴圈是否正常結束,但會使程式碼變得較為冗長且可讀性較差。
使用標誌變數的範例:
flag = False
for i in range(5):
if i == 3:
flag = True
break
if flag:
print("特定條件已滿足。")
else:
print("條件未滿足。")
這段程式碼比起 for-else 語法更長,並且需要額外的 flag 變數來記錄狀態,會使程式碼的可讀性降低。而透過 for-else 語法,可以讓程式碼更加簡潔易懂。
6. for-else 語法的注意事項與最佳實踐
在使用 for-else 語法時,有幾個重要的注意事項。特別是,else 區塊並非總是必要的,因此在使用時應該考慮其是否真正有助於提升可讀性。此外,需要理解 else 區塊僅在迴圈完整執行時才會執行,若使用 break 來提前結束迴圈,則 else 區塊將不會執行。
此外,與不使用 else 的方式進行比較時,若目標是提升可讀性,則應優先考慮使用 for-else 語法,以減少不必要的程式碼並提升程式的可維護性。

7. 結論
Python 的 for-else 語法是一個實用的工具,能夠輕鬆判斷迴圈是否正常執行至最後一輪。搭配 break 使用時,可以清楚區分迴圈是否因條件滿足而提早終止,避免使用標誌變數(flag),從而讓程式碼更加簡潔。
透過靈活運用 for-else 語法,並結合 Python 的其他控制流程語法,可以撰寫出更加高效且可讀性更高的程式碼。