Break và Continue
Trong học phần này, tôi sẽ thể hiện cho bạn hai từ khoá loop khác cái Python hỗ trợ:
break và continue. Nó là kinh nghiệm của tôi rằng giới thiệu những từ khoá này dẫn tới
người học lạm dụng chúng đối với sự phá tính rõ ràng các loops của họ, nên tôi đã quyết
định tránh chúng nơi khác trong các học phần khác. Tuy vậy, chúng đôi khi hữu dụng, và bạn
có khả năng thấy chúng trong code Python khác, nên hãy cùng thảo luận ngắn.
break
Từ khoá break ngay lập tức chấm dứt một loop, không câu hỏi nào được hỏi.
Quay trở lại khi ta giải quyết bài toán Song Playlist, chúng ta đã sử dụng một while loop
cái lặp qua trong khi nút không phải là 4. Chúng ta cũng có thể giải quyết bài toán đó sử
dụng break, xem code:
songs = ‘ABCDE’
1 while True:button = int(input())
2 if button == 4:3 break
presses = int(input())
for i in range(presses):if button == 1:
songs = songs[1:] + songs[0]
elif button == 2:
songs = songs[-1] + songs[:-1]
elif button == 3:
songs = songs[1] + songs[0] + songs[2:]
output = ”
for song in songs:output = output + song + ‘ ‘
print(output[:-1])
Biểu thức Boolean của loop 1 trông đáng ngờ: True luôn là True, nên ở cái nhìn đầu tiên nó dường
như rằng loop này không bao giờ chấm dứt (Đó là nhược điểm đối với break. Chúng ta chính không thể
nhìn vào biểu thức Boolean để hiểu cái gì phải xảy ra cho loop chấm dứt). Nhưng nó có thể chấm dứt, vì
việc sử dụng break của chúng ta. Nếu nút 4 được ấn 2, thì chúng ta chạm break 3, cái chấm dứt loop.
Hãy xem một ví dụ nữa về việc sử dụng break. Trong “while Loops Through Indices” trong chapter này, chúng
ta đã viết code để tìm ra chỉ mục của chữ ‘y’ đầu tiên trong một string. Sau đây là cái đó trông
như thế nào sử dụng break:
>>> s = ‘zephyr’
>>> i = 0
>>> while i < len(s):… if s[i] == ‘y’:
… break
… i = i + 1
…
>>> print(i)
4
Lại một lần nữa, nhận thấy rằng biểu thức Boolean của loop không dẫn sai hướng: nó đề nghị rằng
loop luôn chạy cho đến cuối của string, những thẩm định kĩ hơn bộc lộ rằng một break đang náu và
có thể ảnh hưởng chấm dứt.
Một break chấm dứt chỉ loop của bản thân nó, không phải loop bên ngoài. Sau đây là một ví dụ khác:
>>> i = 0
>>> while i < 3:… j = 10
… while j <= 50:… print(j)
… if j == 30:1 … break
… j = j + 10
… i = i + 1
…
10
20
30
10
20
30
10
20
30
Nhận thấy break 1 cắt ngắn j loop như thế nào. Nhưng nó không ảnh hưởng i loop: có 3 lần lặp của loop đó, chính xác
như ở đó sẽ là mà không có break 1.