Bài học theo mô-đun (3/4)
ngắt, tiếp tục và những thứ khác trong vòng lặp
Bên trong một vòng lặp (cả for và while), bạn có thể thay đổi luồng bình thường bằng
ba cấu trúc:
break— thoát vòng lặp ngay lập tức.continue— bỏ qua phần nội dung còn lại và chuyển sang lần lặp tiếp theo.else(trên vòng lặp) — được thực thi khi vòng lặp kết thúc không có abreak.
break
for n in [3, 7, 11, 4, 9]:
if n % 2 == 0:
primo_pari = n
break
primo_pari # 4break dừng vòng lặp càng sớm càng tốt. Mọi thứ sau break trong
phần thân của lần lặp hiện tại KHÔNG được thực thi.
continue
risultati = []
for n in range(1, 11):
if n % 2 == 0:
continue # skip evens
risultati.append(n * n)
risultati # [1, 9, 25, 49, 81]Hãy coi continue là "chuyển sang lần lặp tiếp theo". Nó được sử dụng để lọc các mục
mà không cần thêm một mức thụt lề nào nữa.
else trên vòng lặp (thành ngữ Python)
Một điểm đặc biệt của Python: các vòng lặp cũng có thể có else, chỉ được thực thi nếu
vòng lặp kết thúc tự nhiên (không có break). Nó hoàn hảo cho việc tìm kiếm:
target = 7
for n in [2, 4, 6, 8]:
if n == target:
trovato = True
break
else:
trovato = False
trovato # FalseĐọc như sau: "với mỗi n trong danh sách; nếu bạn chọn nhánh break, hãy bỏ qua
cái khác; nếu không thì thực hiện cái khác".
Các vòng lặp lồng nhau: break chỉ thoát ra khỏi vòng lặp trong cùng
for x in range(3):
for y in range(3):
if x == y == 1:
break
print(x, y)break chỉ thoát khỏi for y chứ không thoát khỏi for x. Để thoát cả hai bạn phải sử dụng một
cờ hoặc hàm + return.
Vòng lặp bất thường...cấu trúc khác
Trong Python, cả hai vòng lặp for và while đều có thể có mệnh đề else tùy chọn. Khối else được thực thi chỉ khi vòng lặp hoàn thành bình thường (tức là không gặp câu lệnh break). Điều này rất hữu ích cho các thuật toán tìm kiếm (ví dụ: "tìm kiếm một phần tử: nếu tìm thấy, hãy ngắt; nếu không, hãy báo cáo rằng nó không được tìm thấy").
Hãy tự mình thử
Cho danh sách `numbers = [10, 15, 20, 25, 30, 35]`, tìm số đầu tiên chia hết cho 7 và gán cho `kết quả`. Nếu không tồn tại, gán -1.
Hiển thị gợi ý
35 là số đầu tiên (và duy nhất) chia hết cho 7 trong danh sách.
Giải pháp khả dụng sau 3 lần thử
Xem lại bài tập
Tạo danh sách `số lẻ` với các số lẻ từ 1 đến 20 (bao gồm) bằng cách sử dụng vòng lặp for trên phạm vi (1, 21) và tiếp tục bỏ qua các số chẵn.
Hiển thị gợi ý
Nếu n chẵn thì tiếp tục; nếu không thì nối thêm.
Giải pháp khả dụng sau 3 lần thử
Thử thách bổ sung
Given the list `numbers = [7, 11, 14, 21, 25]`, write a `for` loop to find the first number that is divisible by 7 and also strictly greater than 10. When you find it, store it in `found` and exit the loop using `break`. Finally, evaluate `found`.
Hiển thị gợi ý
Inside the loop, check if num % 7 == 0 and num > 10:, assign it to found and trigger break.
Giải pháp khả dụng sau 3 lần thử