While True loop và phát biểu break (tiếp tục)
Ví dụ tiếp theo của chúng ta điều chỉnh phần nhập vào của chương trình grade-conversion để tiếp tục lấy các số nhập
vào từ người dùng cho đến khi họ nhập vào một giá trị chấp nhận được. Logic của loop này là tương tự cái của ví
dụ trước.
while True:
number = int(input(“Enter the numeric grade: “))
if number >= 0 and number <= 100:break
else:
print(“Error: grade must be between 100 and 0”)
print(number) # Just echo the valid input
Một chạy thử với chính đoạn code này thể hiện tương tác sau:
Enter the numeric grade: 101
Error: grade must be between 100 and 0
Enter the numeric grade: -1
Error: grade must be between 100 and 0
Enter the numeric grade: 45
45
Một vài nhà khoa học máy tính cho rằng một while True loop với một đi ra trì hoãn vi phạm tinh thần entry-control
của while loop. Tuy nhiên, trong các trường hợp nơi body của loop phải thực thi ít nhất một lần, kĩ thuật này
đơn giản hóa code và thực sự làm logic chương trình rõ ràng hơn. Nếu bạn không bị thuyết phục bởi cái lí giải này
và vẫn muốn test cho tiếp diễn và đi ra tại đỉnh loop, bạn có thể sử dụng một biến Boolean để kiểm soát loop. Sau
đây là một phiên bản của loop nhập vào số cái sử dụng một biến Boolean:
done = False
while not done:number = int(input(“Enter the numeric grade: “))
if number >= 0 and number <= 100:done = True
else:
print(“Error: grade must be between 100 and 0”)
print(number) # Just echo the valid input
Cho một thảo luận kinh điển với vấn đề này, xem bài viết của Eric Roberts “Loop Exits and Structured Programming
: Reopening the Debate,” ACM SIGCSE Bulletin, Volume 27, Number 1, March 1995, pp. 268–272.
Mặc dù phát biểu break là hoàn toàn hữu dụng khi nó kiểm soát một loop với ít nhất một lần lặp, bạn nên chủ yếu
sử dụng nó cho chỉ một điểm ra đơn từ các loops như vậy.