Python break 與 continue
break 和 continue 用來控制迴圈的執行流程。
break
break 用來立即跳出整個迴圈,不再執行剩餘的迭代:
for i in range(10):
if i == 5:
break
print(i)
print("Loop ended")
輸出:
0
1
2
3
4
Loop ended
break 在 while 迴圈中
count = 0
while True: # 無窮迴圈
print(count)
count += 1
if count >= 5:
break # 跳出迴圈
print("Done")
輸出:
0
1
2
3
4
Done
break 在巢狀迴圈中
break 只會跳出最內層的迴圈:
for i in range(3):
for j in range(3):
if j == 2:
break # 只跳出內層迴圈
print(f"({i}, {j})")
print(f"End of inner loop for i={i}")
輸出:
(0, 0)
(0, 1)
End of inner loop for i=0
(1, 0)
(1, 1)
End of inner loop for i=1
(2, 0)
(2, 1)
End of inner loop for i=2
continue
continue 用來跳過當前這次迭代,直接進入下一次迭代:
for i in range(10):
if i % 2 == 0:
continue # 跳過偶數
print(i)
輸出:
1
3
5
7
9
continue 在 while 迴圈中
count = 0
while count < 10:
count += 1
if count % 2 == 0:
continue # 跳過偶數
print(count)
輸出:
1
3
5
7
9
在 while 迴圈中使用 continue 時,要小心不要造成無窮迴圈:
# 錯誤示範 - 無窮迴圈!
count = 0
while count < 5:
if count == 3:
continue # count 永遠是 3,無法繼續
print(count)
count += 1
正確做法
count = 0
while count < 5:
count += 1
if count == 3:
continue
print(count)
break 和 continue 的比較
| 關鍵字 | 作用 |
|---|---|
break | 完全跳出迴圈 |
continue | 跳過當前迭代,繼續下一次迭代 |
print("=== break ===")
for i in range(5):
if i == 3:
break
print(i)
# 輸出: 0, 1, 2
print("=== continue ===")
for i in range(5):
if i == 3:
continue
print(i)
# 輸出: 0, 1, 2, 4
實際範例
搜尋元素
numbers = [4, 7, 2, 9, 1, 8, 5]
target = 9
for i, num in enumerate(numbers):
if num == target:
print(f"Found {target} at index {i}")
break
else:
print(f"{target} not found")
過濾無效資料
data = ["apple", "", "banana", None, "orange", "", "grape"]
valid_items = []
for item in data:
if not item: # 跳過空值和 None
continue
valid_items.append(item)
print(valid_items) # ['apple', 'banana', 'orange', 'grape']
驗證使用者輸入
while True:
password = input("Enter password (at least 6 characters): ")
if len(password) < 6:
print("Password too short, try again.")
continue
if not any(c.isdigit() for c in password):
print("Password must contain at least one digit.")
continue
print("Password accepted!")
break
跳過特定檔案
files = ["data.csv", "readme.txt", ".gitignore", "script.py", ".env"]
for file in files:
if file.startswith("."): # 跳過隱藏檔案
continue
print(f"Processing {file}")
輸出:
Processing data.csv
Processing readme.txt
Processing script.py
找出第一個質數
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
numbers = [4, 6, 8, 9, 11, 12, 13, 14, 15]
for num in numbers:
if is_prime(num):
print(f"First prime found: {num}")
break
else:
print("No prime found")