Vòng lặp while trong Python

While Python có chức năng gì? Cách dùng vòng lặp while trong Python như thế nào? Hãy cùng Quantrimang.com tìm hiểu nhé!

Lập trình hiện đang là thuộc top những ngành nghề được săn đón và có mức lương cao hiện nay. Tất cả bởi lập trình là một phần không thể thiếu trong hành trình phát triển khoa học, công nghệ của một quốc gia. Nhờ có lập trình mà nhiều sản phẩm, ứng dụng hữu ích đã ra đời.

Loop hay vòng lặp là tính năng hữu ích và được sử dụng thường xuyên trong tất cả ngôn ngữ lập trình hiện đại ngày nay. Nếu muốn tự động hóa tác vụ lặp lại cụ thể hay ngăn bản thân viết code trùng lặp trong chương trình đang phát triển, dùng vòng lặp là lựa chọn tốt nhất.

Loop là một tập hợp các hướng dẫn chạy lặp lại cho tới khi điều kiện được đáp ứng. Trong Python, bạn có hai kiểu vòng lặp:

  • Vòng lặp for
  • Vòng lặp while

Ở bài viết này, chúng ta sẽ học cách tạo hàm while trong Python và tìm hiểu cách thức hoạt động của nó.

Vòng lặp while Python là gì?

Về cơ bản, while trong Python được dùng để lặp lại một khối lệnh hay đoạn code khi điều kiện đúng. Bạn có thể dùng while trong nhiều trường hợp nhưng nó thường được sử dụng khi người dùng không đoán trước được số lần cần lặp lại. Dưới đây là chi tiết cách dùng Python khi lập trình web, ứng dụng.

Cú pháp của while trong Python

while dieu_kien:
    Khối lệnh của while

Trong vòng lặp while, dieu_kien sẽ được kiểm tra đầu tiên, nếu nó là True, thì khối lệnh của vòng lặp sẽ được thực thi. Sau một lần lặp, dieu_kien sẽ được kiểm tra lại và quá trình lặp này sẽ chỉ dừng cho đến khi điều kiện 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ó 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 dieu_kien đã False. Khi đó, khối lệnh của while sẽ bị bỏ qua và phần code dưới khối lệnh while 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ụ: In lần lượt các số nhỏ hơn 8

#In và đếm các số từ 0 tới 8:

count = 1
n = 0
while (n < 8):
      print ('Số thứ', count,' là:', n)
      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 n không còn nhỏ hơn 8 nữa. Kết quả khi chạy lệnh trên ta có:

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

Lưu ý:

  • Hãy nhớ tăng biến điều kiện trong while (trong ví dụ trên là n), nếu không vòng lặp sẽ trở thành vòng lặp vô hạn - tiếp tục lặp mãi mãi.
  • Vòng lặp while yêu cầu biến trong điều kiện phải là giá trị xác định, trong ví dụ trên biến lập chỉ mục lặp là biến n, chúng ta phải đặt giá trị ban đầu cho nó là 1.

Ví dụ: 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.

Lệnh break trong while

Với câu lệnh break, chúng ta có thể dừng vòng lặp ngay cả khi điều kiện của whileTrue:

Ví dụ: Thoát vòng lặp khi i bằng 3:

i = 1
while i < 6:
  print(i)
  if i == 3: #kiểm tra điều kiện xem i bằng 3 hay chưa
    break
  i += 1 #cập nhật biến đếm

Kết quả của ví dụ trên là i sẽ được in từ số 1 đến số 3, sau khi in xong số 3 gặp lệnh if và vòng lặp sẽ dừng lại (không in tiếp số 4, 5):

1
2
3

Lệnh continue trong while

Câu lệnh continue trong while sẽ khiến cho vòng lặp bỏ qua lần lặp hiện tại và tiếp tục chạy ở lần lặp tiếp theo.

Ví dụ: In các số từ 1 đến 6 ngoại trừ số 3

i = 0
while i < 6:
  i += 1
  if i == 3:
    continue
  print(i)

Trong 2 vòng lặp đầu tiên i bằng 1 và 2 thì vòng lặp vẫn chạy lệnh in. Tới vòng lặp tiếp theo, phù hợp với điều kiện if i bằng 3 thì sẽ chạy lệnh continue => bỏ qua vòng lặp đó để chạy thẳng sang vòng lặp kế sau nó (in số 4, 5, 6).

Kết quả đầu ra:

1
2
4
5
6

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 whileFalse.

Ví dụ: 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ụ: Đế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

Lệnh 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ụ: 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 =)).

Kiểm tra kiến thức vòng lặp while trong Python

Tóm lại những điều cần biết về lệnh while trong Python:

  • Bắt đầu vòng lặp while bằng cách dùng từ khóa while.
  • Sau đó, bạn thêm một điều kiện là biểu thức Boolean. Một biểu thức Boolean đánh giá giá trị là true hoặc false.
  • Điều được được theo sau bởi dấu hai chấm (:).
  • Trên dòng mới, bạn thêm một cấp độ thụt lề. Nhiều trình chỉnh sửa code sẽ tự động làm việc này cho bạn. Ví dụ, khi dùng Visual Studio Code với tiện ích mở rộng Python, ngay sau khi viết dấu hai chấm và nhấn Enter, nó sẽ tự động thụt lề code về bên phải.
  • Code bạn muốn sẽ nằm ở phần nội dung của lệnh while.
  • Điều kiện while đánh giá true, code bên trong phần nội dung của while sẽ chạy. Phần code này sẽ tiếp tục chạy cho tới khi điều kiện không còn được đáp ứng và đánh giá là false.

Do while trong Python có thể gây bối rối với người mới bắt đầu sử dụng. Tuy nhiên, một khi bạn đã hiểu khái niệm vòng lặp, bạn sẽ nhận ra rằng “while” trước “loop” của Python chỉ là một câu lệnh điều kiện.

Một lệnh điều kiện tuân theo vòng lặp while. Nó quyết định điều xảy ra trong vòng lặp. Trong khi điều kiện đó vẫn là True, biểu thức trong vòng lặp vẫn liên tục được thực thi.

Nhìn chung, vòng lặp được sử dụng khi bạn cần xử lý từng nhân tố trong danh sách hoặc mảng khi lập trình. Một vòng lặp while cũng liên tục chạy cho tới khi một lệnh trong vòng lặp đó dừng lại.

Vòng lặp while trong Python có một số hạn chế khi xử lý một bộ sưu tập mảng. Thực tế, khác vòng lặp for, vòng lặp while không cung cấp tính đặc hiệu trong câu lệnh điều khiển. Tuy nhiên, vòng lặp while có những ứng dụng riêng, vì thế, nắm rõ cách dùng nó khi lập trình là hoàn toàn cần thiết.

Trên đây là những điều cần biết về do while trong Python. Hi vọng bài viết giúp bạn biết cách dùng tốt vòng lặp này.

Thứ Ba, 01/10/2024 02:02
4,430 👨 181.961
1 Bình luận
Sắp xếp theo
  • Linh Hữu
    Linh Hữu

     Dùng vòng lặp while yêu cầu người dùng nhập vào một con số dương chia hết cho 2, nếu nhập sai bắt nhập lại cho đến khi nhập đúng

    Thích Phản hồi 03/12/22
    • Thiện Văn
      Thiện Văn

      while True:

          n = int(input("Nhập n: "))

          if n % 2 == 0:

             print(f"số {n} chia hết cho 2")

             break

          else:

              print("Nhập lại:")


      Thích Phản hồi 13/07/23
❖ Học Python