Vòng lặp trong lập trình cho phép chúng ta thực thi liên tục một tập lệnh/khối mã cho đến khi thỏa mãn một điều kiện nhất định.
Chúng ta cũng có thể sử dụng các vòng lặp để lặp lại một tập hợp dữ liệu và thực hiện thao tác tương tự trên từng mục trong tập dữ liệu.
names = ["John", "Jane", "Doe"]
for i in names:
print(i)
"""
John
Jane
Doe
"""
Trên đây là một con trăn for
vòng lặp lặp qua danh sách tên và in tất cả tên.
Trong các tình huống mà chúng tôi muốn dừng lặp lại trước khi đến mục cuối cùng hoặc trước khi một điều kiện nhất định được đáp ứng, chúng tôi có thể sử dụng break
bản tường trình. Các break
câu lệnh sẽ có điều kiện riêng của nó – điều này cho nó biết khi nào thì “ngắt” vòng lặp.
Trong bài viết này, trước tiên chúng ta sẽ xem cách sử dụng break
tuyên bố trong for
và while
vòng lặp. Sau đó, chúng ta sẽ xem xét một số phương pháp mà chúng ta có thể sử dụng để phá vỡ các vòng lặp lồng nhau trong Python.
Làm thế nào để bạn viết một break
Tuyên bố trong Python?
Bạn xác định break
câu lệnh trong vòng lặp mà bạn muốn nó kết thúc. Trong phần này, chúng ta sẽ xem cách sử dụng break
tuyên bố trong for
và while
vòng lặp.
Làm thế nào để sử dụng break
Tuyên bố trong một for
Vòng
Đây là một ví dụ:
names = ["John", "Jane", "Doe"]
for i in names:
print(i)
if i == "Jane":
break
Trong đoạn mã trên, chúng tôi đang in một danh sách các tên:
for i in names:
print(i)
Sau đó, chúng tôi đã tạo một điều kiện mới để kiểm tra khi i
biến có tên bằng “Jane”. Khi điều kiện đó được đáp ứng, vòng lặp được yêu cầu dừng lại. Nó dừng lại vì break
câu lệnh dừng vòng lặp khi i
là “Jane”:
if i == "Jane":
break
Điều này giống như nói: “in tất cả các tên và dừng lại khi bạn đến Jane”. Vì vậy, trong bảng điều khiển của chúng tôi, trong số ba tên — ["John", "Jane", "Doe"]
– chỉ “John” và “Jane” sẽ được in.
Chúng ta cũng có thể làm điều này với các con số:
for i in range(10):
print(i)
Đoạn mã trên in ra một dãy số từ 0 đến 9. Nhưng chúng ta có thể ngăn vòng lặp này in tất cả các số – thay vào đó, chúng ta có thể dừng ở một số cụ thể. Đây là cách:
for i in range(10):
print(i)
if i == 5:
break
Bây giờ các vòng lặp dừng ở 5. Vì vậy, chúng ta sẽ chỉ thấy 0, 1, 2, 3, 4 và 5 trong bảng điều khiển.
Làm thế nào để sử dụng break
Tuyên bố trong một while
Vòng
Ví dụ trong phần này sẽ tương tự như phần trước. Chúng tôi sẽ sử dụng một while
vòng lặp thay thế.
i = 0
while i < 10:
print(i)
i += 1
Đoạn mã trên in ra một dãy số từ 0 đến 9. Chúng ta sẽ sử dụng break
ngừng in số khi chúng ta đến 5.
i = 1
while i < 10:
print(i)
if i == 5:
break
i += 1
Giống như chúng ta đã làm trong phần trước, chúng ta đã tạo một điều kiện mới: if i == 5
và khi điều kiện này được đáp ứng, vòng lặp sẽ kết thúc thay vì in đến 9.
Làm thế nào để sử dụng break
Tuyên bố trong một vòng lặp lồng nhau
Trong phần này, chúng ta sẽ xem cách sử dụng break
câu lệnh trong các vòng lặp lồng nhau.
Đây là giao diện của một vòng lặp lồng nhau:
for x in range(4):
for y in range(4):
print(x, y)
"""
0 0
0 1
0 2
0 3
1 0
1 1
1 2
1 3
2 0
2 1
2 2
2 3
3 0
3 1
3 2
3 3
"""
Các vòng lặp lồng nhau thường có thể gây nhầm lẫn cho người mới bắt đầu. Vì vậy, nếu bạn đang thắc mắc làm thế nào chúng tôi có kết quả ở trên (được nhận xét trong mã), thì đây là lời giải thích ngắn gọn:
range(4)
sẽ cho ta dãy số từ 0 đến 3.
Chỉ in for x in range(4):
sẽ cho chúng ta 0, 1, 2, 3. Nhưng chúng ta đang lồng một dãy số khác trong vòng lặp: for y in range(4):
Những gì vòng lặp thứ hai làm là nhân đôi từng số x
bởi số lượng các số nguyên mà nó có (trong y
phạm vi). Chúng tôi có bốn số trong y
phạm vi – 0, 1, 2, 3.
Vì vậy đối với x
phạm vi, số đầu tiên là 0 và nó sẽ xuất hiện bốn lần. Mỗi lần nó xuất hiện, nó lấy một số từ y
phạm vi; đó là: 0 và 0, 0 và 1, 0 và 2, 0 và 3. Điều này áp dụng cho các số khác trong x
phạm vi.
Nếu bạn vẫn thấy điều này khó hiểu, thì hãy thử tự chạy mã. Hãy thử thay đổi phạm vi của từng vòng lặp để xem điều gì xảy ra với đầu ra.
Hãy phá vỡ vòng lặp bằng cách sử dụng break
bản tường trình:
for x in range(4):
for y in range(4):
if x == 1:
break
print(x, y)
"""
0 3
1 3
2 0
3 3
"""
Mặc dù vòng lặp trong ví dụ trên dường như đã dừng, nhưng khi xem xét kỹ hơn kết quả đầu ra (đã nhận xét ở trên), bạn sẽ nhận ra rằng vòng lặp bên ngoài vẫn đang in ra tất cả các giá trị của nó, điều không được dự định.
Vì vậy, chỉ cần sử dụng break
tuyên bố không thực sự phá vỡ một vòng lặp lồng nhau. Hãy xem một số cách giải quyết để đạt được kết quả mong muốn của chúng tôi.
Sử dụng biến Boolean
force_break_loop = False
for x in range(5):
for y in range(5):
if x == 2:
force_break_loop = True
break
if force_break_loop:
break
print(x, y)
"""
0 4
1 4
"""
Trong ví dụ trên, chúng tôi đang sử dụng một biến boolean có giá trị ban đầu là False
. Khi vòng lặp đến điểm ngắt dự định, chúng tôi đặt giá trị boolean này là True
, nhưng đó không phải là tất cả. Chúng tôi kiểm tra khi biến là True
và sau đó chỉ định break
bản tường trình.
Sử dụng Tuyên bố Break hai lần
for x in range(5):
for y in range(5):
if x == 3:
break
if x == 3:
break
print(x, y)
"""
0 4
1 4
2 4
"""
Trong ví dụ này, chúng tôi định nghĩa hai if
câu lệnh – cả hai đều trả về một break
tuyên bố buộc vòng lặp phải phá vỡ.
Mặc dù các giải pháp thay thế này có thể đã kết thúc vòng lặp tại một trường hợp nhất định, nhưng bạn sẽ nhận thấy rằng giá trị của vòng lặp bên trong vẫn giữ nguyên mỗi khi vòng lặp bị ngắt.
Điều này không có nghĩa là các vòng lặp lồng nhau là xấu. Nhưng hãy đảm bảo rằng bạn thực sự cần chúng trước khi triển khai chúng trong logic của mình.
Phần kết luận
Trong bài viết này, chúng ta đã thấy cách sử dụng break
câu lệnh để kết thúc một vòng lặp trước khi điều kiện ban đầu của vòng lặp được đáp ứng hoặc trước khi hoàn tất việc lặp lại các mục trong tập dữ liệu.
Chúng tôi đã thấy một số ví dụ về cách bạn có thể sử dụng break
tuyên bố trong cả hai for
và while
vòng lặp.
Cuối cùng, chúng ta đã nói về các vòng lặp lồng nhau. Chúng tôi phát hiện ra rằng một break
tuyên bố không thực sự dừng vòng lặp. Điều này khiến chúng tôi thấy một số ví dụ về một số phương pháp mà chúng tôi có thể sử dụng để phá vỡ vòng lặp lồng nhau trong Python.
Chúc mừng mã hóa!