Vòng lặp while
Trong Python, cấu trúc vòng lặp while tương tự với hầu hết các ngôn ngữ khác, nó thực hiện lặp đi lặp lại một lệnh hoặc một khối lệnh cho đến khi nhận được giá trị false từ biểu thức sau while.
Cấu trúc while
while condition:
statement(s)
Trong đó:
- statement(s) là các khối lệnh nằm trong vòng lặp.
- condition chính là điều kiện lặp của while.
Nguyên tắc hoạt động
Nguyên tắc hoạt động của vòng lặp while được thể hiện qua sơ đồ khối sau:
Khi nhận giá trị true từ condition, các khối lệnh bên trong while sẽ được thực hiện. Sau khi thực hiện xong sẽ quay về và kiểm tra giá trị của condition và cứ tiếp tục như thế cho đến khi nhận được giá trị false từ condition thì vòng lặp sẽ kết thúc.
Một lưu ý nhỏ là khối lệnh bên trong while có khả năng sẽ không bao giờ được thực hiện nếu lần kiểm tra giá trị đầu tiên của while trả về giá trị false. Khi đó, vòng lặp while sẽ được bỏ qua và chương trình sẽ thực hiện tiếp các lệnh sau nó.
Ví dụ
Chúng ta đến với ví dụ sau để có thể hiểu rõ hơn về vòng lặp while.
stdio_authors = \
[
"La Kien Vinh",
"Brian Vu",
"Taco Nguyen",
"Ryan Le",
"TOMBSTONE"
]
count = 0
while (stdio_authors[count] != "TOMBSTONE"):
print (stdio_authors[count])
count += 1;
Kết quả in ra màn hình:
La Kiến Vinh
Brian Vu
Taco Nguyen
Ryan Lê
Vòng lặp vô hạn
Vòng lặp while có thể trở thành một vòng lặp vô hạn nếu như điều kiện sau while không bao giờ trả về giá trị false. Vì vậy khi sử dụng vòng lặp while bạn cần thận trọng để tránh gây ra lỗi không đáng có làm sai mục đích lập trình.
Xét lại ví dụ trên nhưng trong trường hợp tôi "quên" tăng biến count lên:
stdio_authors = \
[
"La Kien Vinh",
"Brian Vu",
"Taco Nguyen",
"RYan Le",
"TOMBSTONE"
]
count = 0
while (stdio_authors[count] != "TOMBSTONE"):
print (stdio_authors[count])
Kết quả in ra màn hình sẽ là hàng loạt dòng "La Kien Vinh" và không bao giờ dừng lại. Ta có thể thấy do một chút nhầm lẫn nhỏ sẽ khiến vòng lặp while trở nên vô hạn.
Tuy nhiên, cũng tuỳ vào mục đích mà đôi khi lập trình viên sẽ cố tình tạo ra và sử dụng vòng lặp vô hạn. Ví dụ như trong lập trình client/server, nơi mà các máy chủ cần phải chạy liên tục để giao tiếp với khách hàng.