Vòng lặp while trong Python

Vòng lặp while trong Python có tác dụng gì? Cú pháp và cách sử dụng vòng lặp while ra sao? Đó là những nội dung mà chúng ta sẽ tiếp cận trong bài học Python này.

Vòng lặp được sử dụng trong lập trình để lặp lại một đoạn code cụ thể, while cũng là một trong số đó. Trong Python, while được dùng để lặp lại một khối lệnh, đoạn code khi điều kiện kiểm tra là đúng. while dùng trong những trường hợp mà chúng ta không thể dự đoán trước được số lần cần lặp là bao nhiêu.

Cú pháp của while trong Python

while điều_kiện_kiểm_tra:
Khối lệnh của while

Trong vòng lặp while, điều_kiện_kiểm_tra sẽ được kiểm tra đầu tiên. Khối lệnh của vòng lặp chỉ được nạp vào nếu điều_kiện_kiểm_tra là True. Sau một lần lặp, điều_kiện_kiểm_tra sẽ được kiểm tra lại. Quá trình này sẽ tiếp tục cho đến khi điều_kiện_kiểm_tra là False. Trong Python mọi giá trị khác 0 đều là True, None và 0 được hiểu là False. Đặc điểm này của while có thể dẫn đến trường hợp là while có thể không chạy vì ngay lần lặp đầu tiên điều_kiện_kiểm_tra đã False. Khi đó, khối lệnh của while sẽ bị bỏ qua và phần code ngay sau đó sẽ được thực thi.

Sơ đồ vòng lặp while trong Python
Sơ đồ vòng lặp while trong Python

Giống như if hay vòng lặp for, khối lệnh của while cũng được xác định thông qua thụt lề. Khối lệnh bắt đầu với thụt lề đầu tiên và kết thúc với dòng không thụt lề đầu tiên liền sau khối.

Ví dụ 1:

count = 0
n = 0
while (count < 8):
print ('Số thứ', n,' là:', count)
n = n + 1
count = count + 1
print ("Hết rồi!") 

Với đoạn code này, ta sẽ tăng dần count và in giá trị của nó cho đến khi giá trị này không còn nhỏ hơn 8 nữa. Kết quả khi chạy lệnh trên ta có: 

Số thứ 0 là: 0
Số thứ 1 là: 1
Số thứ 2 là: 2
Số thứ 3 là: 3
Số thứ 4 là: 4
Số thứ 5 là: 5
Số thứ 6 là: 6
Số thứ 7 là: 7
Hết rồi! 

Ví dụ 2: Sử dụng while để tính tổng các số 

n = int(input("Nhập n: ")) #Nhập số n tùy ý
tong = 0 #khai báo và gán giá trị cho tong
i = 1 #khai báo và gán giá trị cho biến đếm i

while i <= n:
    tong = tong + i
    i = i+1 # cập nhật biến đếm

print("Tổng là", tong)

Với khối lệnh trên ta có, nhập một số tự nhiên n bất kỳ và tính tổng các số từ 1 đến n, sau đó in tổng. Biến lưu trữ tổng là tong, biến đếm là i, cho đến khi i còn nhỏ hơn hoặc bằng n thì vòng lặp vẫn tiếp tục và tong vẫn tăng.

Sau khi chạy lệnh ta có kết quả:

Nhập n: 11
Tổng là 66

Trong ví dụ trên biến đếm i cần phải được tăng giá trị, điều này là rất quan trọng, nếu không sẽ dẫn đến một vòng lặp vô hạn. Rất nhiều trường hợp lưu ý này đã bị lãng quên.

Ví dụ 3: Vòng lặp vô hạn

Lấy lại ví dụ trên, bạn chỉ cần bỏ đi dòng i=i+1

n = int(input("Nhập n: ")) #Nhập số n tùy ý
tong = 0 #khai báo và gán giá trị cho tong
i = 1 #khai báo và gán giá trị cho biến đếm i

while i <= n:
    tong = tong + i

print("Tổng là", tong) 

Khi này chạy lệnh ta sẽ được:

Nhập n: 1
Traceback (most recent call last):
File "C:/Users/Quantrimang.com/Programs/Python/Python36-32/QTM.com", line 6, in <module>
tong = tong + i
KeyboardInterrupt
2
3
4
5

Khi bạn nhập giá trị 1 vào thì thấy không có lệnh nào được thực hiện tiếp, nhấn Enter > nhập 2 > Enter > nhập 3... đến 5 vẫn không thấy tong được in. Đây là một trường hợp của lệnh vô hạn. Để thoát khỏi vòng lặp vô hạn bạn nhấn phím Ctrl + C, khi đó sẽ xuất hiện dòng thông báo "Traceback..." như bên trên.

Kết hợp while với else

Giống như vòng lặp for, bạn cũng có thể kết hợp else với while. Trong trường hợp này, khối lệnh của else sẽ được thực hiện khi điều kiện của while là False.

Ví dụ 4: Minh họa việc sử dụng while kết hợp với else

dem = 0
while dem < 3:
  print("Đang ở trong vòng lặp while")
  dem = dem + 1
else:
  print("Đang ở trong else")

Ở đây ta sử dụng biến dem để in chuỗi "Đang ở trong vòng lặp while" 3 lần. Đến lần lặp thứ 4, điều kiện của while trở thành False, nên phần lệnh của else được thực thi. Kết quả là:

Đang ở trong vòng lặp while
Đang ở trong vòng lặp while
Đang ở trong vòng lặp while
Đang ở trong else

Ví dụ 5: Đếm và in các số nhỏ hơn 2 

n = 0
while n < 2:
print(n,"nhỏ hơn 2")
n = n + 1
else:
print (n,"không nhỏ hơn 2")

Giá trị ban đầu của n ta gán là 0, tăng dần giá trị của n và in, lặp cho đến khi n không nhỏ hơn 2, nếu n bằng hoặc lớn hơn 2 thì vòng lặp kết thúc và khối lệnh else sẽ được thực thi, kết quả là:

0 là nhỏ hơn 2
1 là nhỏ hơn 2
2 không nhỏ hơn 2

while trên một dòng

Nếu vòng lặp while chỉ có một lệnh duy nhất thì có thể viết trên cùng một dòng với while như ví dụ này:

Ví dụ 6: Vòng lặp vô hạn với while một dòng lệnh

flag = 1 while (flag): print ('Flag đã cho là True!")
Print ("Hẹn gặp lại!")

Đây là một vòng lặp vô hạn, hãy nhớ tổ hợp phím Ctrl + C trước khi bạn nhấn F5 hay Run, nếu không nó sẽ chạy từ ngày này qua ngày khác đấy =)).

Hết rồi, vòng lặp while cũng không phức tạp lắm nhỉ. Trong phần tiếp theo chúng ta sẽ tìm hiểu về lệnh break và continue trong Python, các bạn đón đọc nhé.

Bài tiếp: Lệnh break và continue trong Python

Bài trước: Vòng lặp for trong Python

Thứ Hai, 19/11/2018 17:15
53 👨 6.971