Một vòng lặp while trong ngôn ngữ lập trình Python sẽ thực hiện liên tục một câu lệnh mục tiêu miễn là điều kiện được chỉ định boolean expression là đúng. Vòng lặp này bắt đầu với từ khóa while theo sau là một biểu thức boolean và dấu hai chấm (:). Sau đó, một khối các câu lệnh thụt vào sẽ bắt đầu.
Ở đây, câu lệnh có thể là một câu lệnh đơn hoặc một khối câu lệnh có thụt lề đồng nhất. Điều kiện có thể là bất kỳ biểu thức nào, và true là bất kỳ giá trị nào khác không. Ngay khi biểu thức trở thành false, điều khiển chương trình sẽ chuyển đến dòng ngay sau vòng lặp.
Nếu nó không chuyển sang giá trị false, vòng lặp sẽ tiếp tục chạy và không dừng lại trừ khi bị dừng một cách cưỡng bức. Một vòng lặp như vậy được gọi là vòng lặp vô hạn, điều này là không mong muốn trong một chương trình máy tính.
Cú pháp của vòng lặp while trong ngôn ngữ lập trình Python là −
while expression: statement(s)
Trong Python , tất cả các câu lệnh được thụt lề bằng cùng một số khoảng cách ký tự sau một cấu trúc lập trình được coi là một phần của một khối mã duy nhất. Python sử dụng thụt lề như một phương pháp để nhóm các câu lệnh lại với nhau.
Sơ đồ luồng dưới đây minh họa vòng lặp while −
Ví dụ sau đây minh họa cách hoạt động của vòng lặp while. Ở đây, vòng lặp sẽ chạy cho đến khi giá trị của biến count trở thành 5.
count=0 while count<5: count+=1 print ("Iteration no. {}".format(count)) print ("End of while loop")
Khi thực thi, đoạn mã này sẽ tạo ra đầu ra sau:
Iteration no. 1 Iteration no. 2 Iteration no. 3 Iteration no. 4 Iteration no. 5 End of while loop
Dưới đây là một ví dụ khác về việc sử dụng vòng lặp while . Trong mỗi lần lặp, chương trình yêu cầu user input và tiếp tục lặp lại cho đến khi người dùng nhập một chuỗi không phải số. Hàm isnumeric() trả về true nếu đầu vào là một số nguyên, false nếu không.
var = '0' while var.isnumeric() == True: var = "test" if var.isnumeric() == True: print ("Your input", var) print ("End of while loop")
Khi chạy đoạn mã, nó sẽ tạo ra đầu ra sau:
enter a number..10 Your input 10 enter a number..100 Your input 100 enter a number..543 Your input 543 enter a number..qwer End of while loop
Một vòng lặp trở thành vòng lặp vô hạn nếu một điều kiện không bao giờ trở thành FALSE. Bạn phải cẩn thận khi sử dụng vòng lặp while vì khả năng điều kiện này không bao giờ giải quyết thành giá trị FALSE. Điều này dẫn đến một vòng lặp không bao giờ kết thúc. Một vòng lặp như vậy được gọi là vòng lặp vô hạn.
Một vòng lặp vô hạn có thể hữu ích trong lập trình client/server, nơi máy chủ cần chạy liên tục để các chương trình client có thể giao tiếp với nó khi cần thiết.
Hãy lấy một ví dụ để hiểu cách hoạt động của vòng lặp vô hạn trong Python −
var = 1 while var == 1 : # This constructs an infinite loop num = int(input("Enter a number :")) print ("You entered: ", num) print ("Good bye!")
Khi thực thi, đoạn mã này sẽ tạo ra đầu ra sau:
Enter a number :20 You entered: 20 Enter a number :29 You entered: 29 Enter a number :3 You entered: 3 Enter a number :11 You entered: 11 Enter a number :22 You entered: 22 Enter a number :Traceback (most recent call last): File "examples\test.py", line 5, in num = int(input("Enter a number :")) KeyboardInterrupt
The above example goes in an infinite loop and you need to use CTRL+C to exit the program.
Python hỗ trợ việc có một câu lệnh else liên kết với một vòng lặp while . Nếu câu lệnh else được sử dụng với một vòng lặp while , câu lệnh else sẽ được thực thi khi điều kiện trở thành sai trước khi điều khiển chuyển sang dòng thực thi chính.
Sơ đồ luồng dưới đây cho thấy cách sử dụng câu lệnh else với vòng lặp while −
Ví dụ dưới đây minh họa sự kết hợp giữa câu lệnh else và câu lệnh while. Khi biến đếm nhỏ hơn 5, giá trị của biến đếm sẽ được in ra. Khi biến đếm trở thành 5, câu lệnh print trong khối else sẽ được thực thi, trước khi điều khiển được chuyển đến câu lệnh tiếp theo trong chương trình chính.
count=0 while count<5: count+=1 print ("Iteration no. {}".format(count)) else: print ("While loop over. Now in else block") print ("End of while loop")
Khi chạy đoạn mã trên, nó sẽ in ra đầu ra sau:
Iteration no. 1 Iteration no. 2 Iteration no. 3 Iteration no. 4 Iteration no. 5 While loop over. Now in else block End of while loop
Tương tự như cú pháp của câu lệnh if , nếu điều kiện while của bạn chỉ bao gồm một câu lệnh duy nhất, nó có thể được đặt trên cùng một dòng với tiêu đề while.
Ví dụ sau đây cho thấy cách sử dụng câu lệnh while trên một dòng.
flag = 0 while (flag): print ("Given flag is really true!") print ("Good bye!")
Khi bạn chạy đoạn mã này, nó sẽ hiển thị đầu ra sau đây −
Good bye!
Thay đổi giá trị cờ thành "1" và thử chương trình ở trên. Nếu bạn làm như vậy, nó sẽ rơi vào vòng lặp vô hạn và bạn cần phải nhấn các phím CTRL+C để thoát.