While trong python và vòng lặp không giới hạn số lần | Laptrinhcanban.com

While trong python và vòng lặp không giới hạn số lần

Hướng dẫn cách sử dụng vòng lặp while trong python. Bạn sẽ học được khái niệm vòng lặp while trong python là gì, cách dùng lệnh while trong vòng lặp không giới hạn số lần, cách thoát khỏi vòng lặp while, cách bỏ qua lượt lặp while hiện tại cũng như cách xử lý các lệnh sau khi kết thúc vòng lặp while bằng while else trong python sau bài học này.

Vòng lặp while trong python

While trong python là vòng lặp giúp lặp đi lặp lại các xử lý trong chương trình nếu biểu thức điều kiện trong nó là True (đúng). Khác với vòng lặp for trong python vốn được sử dụng để lặp lại các xử lý trong chương trình với một số lần cụ thể thì while trong python sẽ lặp lại liên tục mãi mãi chừng nào biểu thức điều kiện trong nó còn True (đúng), do đó nó được sử dụng trong các trường hợp mà chúng ta không muốn giới hạn số lần lặp, hoặc là khi muốn tạo ra vòng lặp vô hạn trong python.

Vòng lặp while trong python bao gồm từ khóa while, một biểu thức điều kiện và một khối gồm các câu lệnh được mô tả trong khối đó. Các lệnh mô tả trong khối chỉ được xử lý khi biểu thức điều kiện được chỉ định là True (đúng). Chúng ta sử dụng cú pháp câu lệnh while trong python như sau:

while biểu thức điều kiện :
    Câu lệnh 1 trong khối while
    Câu lệnh 2 trong khối while
    …

Nếu biểu thức điều kiện True (đúng), các câu lệnh mô tả trong khối While sẽ được thực thi theo thứ tự.

Ví dụ chúng ta viết:

num = 1
while (num < 20):
num = num * 3
print(num);
#>> 3
#>> 9
#>> 27

Lại nữa, trong python, các khối được định nghĩa nhờ các dấu thụt lề đầu dòng. Tất cả các câu lệnh mô tả trong khối đều cần được viết với độ thụt lề giống nhau. Về mặc định, chúng ta sẽ dùng 4 ký tự trắng liên tiếp được tạo ra khi bạn nhấn dấu cách Space trên bàn phím 4 lần , hoặc là một dấu tab được tạo ra khi bạn nhấn phím Tab một lần, để quy định độ thụt lề của khối. Bạn có thể tìm hiểu chi tiết về cách thụt lề tại bài viết Thụt lề trong python.

Để hiểu rõ hơn, chúng ta sẽ thử viết một vòng lặp while trong python đơn giản để in ra màn hình các số nhỏ hơn 4 như sau:

num = 1

while num <= 3 :
print(num)
num += 1
print("END")
#> 1
#> 2
#> 3
#> END

Khác với vòng lặp for sẽ lặp một số lần bằng chính số phần tử của một đối tượng, thì trong vòng lặp while chỉ có duy nhất biểu thức điều kiện để quyết định số lần lặp mà thôi. Do đó chúng ta cần phải khai báo biến đếm để sử dụng trong biểu thức điều kiện của while, chính là dòng:

num = 1

Ngoài ra, chúng ta cũng cần tự viết biểu thức thay đổi trong khối while để thay đổi giá trị của biến đếm sau mỗi lượt lặp. Ví dụng như dòng code sau sẽ tăng biến num thêm 1 đơn vị sau mỗi lượt lặp.

num += 1

Lại nữa, nếu như chúng ta không viết biểu thức thay đổi trong khối while sẽ khiến biểu thức điều kiện của while luôn True, dẫn đến bạn sẽ vô tình tạo ra một vòng lặp vô hạn trong JavaScript. Trừ những trường hợp cần thiết thì vòng lặp vô hạn do không bao giờ dừng lại sẽ gây tốn dung lượng và làm hỏng chương trình, do đó bạn hãy chú ý và viết biểu thức thay đổi khi sử dụng while trong JavaScript nhé.

Vậy vòng lặp while ở trên sẽ chạy như thế nào? Hãy xem kỹ ở phần miêu tả các xử lý sau đây:

Lượt lặp đầu tiên:

  1. Khai báo biến num và gán giá trị ban đầu num = 1
  2. Biểu thức điều kiện num <= 3 là TRUE nên thực thi vòng lặp
  3. Chạy lệnh print(num) trong khối lệnh và in num ra màn hình
  4. Chạy biểu thức thay đổi num += 1 và tăng giá trị num lên 1 đơn vị thành num = 2

Lượt lặp thứ 2:

  1. Biểu thức điều kiện num <= 3 là TRUE nên thực thi vòng lặp
  2. Chạy lệnh print(num) trong khối lệnh và in num ra màn hình
  3. Chạy biểu thức thay đổi num += 1 và tăng giá trị num lên 1 đơn vị thành num = 3

Lượt lặp thứ 3:

  1. Biểu thức điều kiện num <= 3 là TRUE nên thực thi vòng lặp
  2. Chạy lệnh print(num) trong khối lệnh và in num ra màn hình
  3. Chạy biểu thức thay đổi num += 1 và tăng giá trị num lên 1 đơn vị thành num = 4

Lượt lặp thứ 4:

  1. Biểu thức điều kiện i <= 3 là FALSE nên kết thúc vòng lặp

Ngoài vòng lặp:

  1. Thực thi lệnh print("END") ngoài vòng lặp và kết thúc chương trình.

Chúng ta có thể khái quát xử lý bằng Sơ đồ khối của vòng lặp while trong python như sau:

Lệnh while trong python

Sử dụng while trong python

Vì vòng lặp while trong python sẽ lặp lại liên tục chừng nào biểu thức điều kiện trong nó còn đúng, nên nó phù hợp với các xử lý không cố định số lần lặp.

Ví dụ, chúng ta sử dụng while để tạo ra một chương trình tính tổng các số nhỏ hơn 4 như sau:

num = 0
total = 0

while num < 4:
print(num)
num += 1
total+=num
print("Tổng =",total)
#> 0
#> 1
#> 2
#> 3
#> Tổng = 10

Lưu ý, khác với lệnh for trong python chỉ lặp lại đúng số lần bằng với số phần tử có trong đối tượng và kết thúc sau khi xử lý phần tử cuối cùng, lệnh while trong python sẽ lặp liên tục cho tới khi biểu thức điều kiện trở nên False (sai) mà thôi. Nói cách khác, nếu biểu thức điều kiện trong lệnh while luôn True (đúng), lệnh while lúc này sẽ tạo ra một vòng lặp vô hạn trong python.

Ví dụ trong chương trình in ra màn hình các số nhỏ hơn 4 ở trên, nếu bạn quên không viết câu lệnh cộng thêm 1 vào biến num sau mỗi vòng lặp để thay đổi giá trị của num, khiến num luôn bằng 0 và nhỏ hơn 3.
Khi đó biểu thức điều kiện của lệnh while luôn True (đúng), dẫn đến câu lệnh while sẽ trở thành một vòng lặp vô hạn trong python.

num = 0

while num < 4:
print(num)

Kết quả, vòng lặp while chạy vô hạn và in ra màn hình giá trị 0 như sau:

0
0
0
0
0
0
0
0
0
0
0
0
0
...
...

Về vòng lặp vô hạn cũng như cách thoát khỏi vòng lặp vô hạn trong python, bạn hãy tham khảo tại bài viết vòng lặp vô hạn trong python nhé.

Bỏ qua lượt lặp hiện tại của vòng lặp while trong python | Lệnh continue

Chúng ta sử dụng lệnh continue để bỏ qua lượt lặp hiện tại của vòng lặp while trong python và thực hiện các lượt lặp kế tiếp. Lệnh while sẽ bỏ qua lượt lặp while hiện tại khi lệnh continue được thực hiện, tất cả các xử lý sau lệnh continue đều bị bỏ qua và chương trình bắt đầu một lượt lặp mới.
Ví dụ, chúng ta bỏ qua lượt lặp trong chương trình tính tổng các số nhỏ hơn 4 ở trên tại thời điểm số đó bằng 2 như sau:

num = 0
total = 0

while num < 4:
if num == 2:
print('!!CONTINUE!!')
num += 1
continue
print(num)
total+=num
num += 1
print("Tổng =",total)

Ở ví dụ này, sau khi số num tăng đến 2 thì thỏa mãn biểu thức điều kiện trong lệnh if, do đó lệnh continue được thực hiện khiến lệnh while dừng các lệnh còn lại của lượt lặp hiện tại và bắt đầu một lượt lặp mới. Kêt quả chỉ có các số 0, 1 và 3 cũng như là tổng của chúng được tính và in ra màn hình mà thôi.

Kết quả:

0
1
!!CONTINUE!!
3
Tổng = 4

Lưu ý là nếu như bạn bỏ quên xử lý biến num += 1 bên trong khối IF chứa lệnh continue ở trên, giá trị của biến sẽ không được cập nhật dẫn đến bạn cũng sẽ bất ngờ rơi vào một vòng lặp vô hạn trong python đấy.

Thoát khỏi vòng lặp while trong python | Lệnh break

Chúng ta sử dụng lệnh break để thoát khỏi vòng lặp while trong python theo điều kiện mà bạn muốn. Lệnh while sẽ dừng lại khi lệnh break được thực hiện, tất cả các xử lý sau lệnh break cũng như các lượt lặp còn lại trong lệnh while đều bị dừng giữa chừng.

Ví dụ, chúng ta dừng chương trình tính tổng các số nhỏ hơn 4 ở trên tại thời điểm số đó bằng 2 như sau:

num = 0
total = 0

while num < 4:
if num == 2:
print('!!BREAK!!')
break
print(num)
total+=num
num += 1
print("Tổng =",total)

Ở ví dụ này, sau khi số num tăng đến 2 thì thỏa mãn biểu thức điều kiện trong lệnh if, do đó lệnh break được thực hiện khiến lệnh while bị dừng lại. Kêt quả chỉ có hai số 0 và 1 cũng như là tổng của chúng được tính và in ra màn hình mà thôi.

Kết quả:

0
1
!!BREAK!!
Tổng = 1

While else trong python

While else trong python là một cấu trúc vòng lặp while trong python được sử dụng để xử lý các câu lệnh sau khi kết thúc lệnh while thông thường.

Ở phần trên chúng ta đã biết Vòng lặp while trong python sẽ lặp lại và kết thúc tại thời điểm biểu thức điều kiện trở nên False (sai).
Tuy nhiên nếu bạn muốn ghi thêm các xử lý khác trong trường hợp biểu thức điều kiện trở nên False (sai), hãy sử dụng lệnh while else trong python với cú pháp sau đây:

while biểu thức điều kiện :
    Câu lệnh 1
    Câu lệnh 2
else:
    Câu lệnh 4
    Câu lệnh 4

Về căn bản thì cách sử dụng while else trong python giống với lệnh while trong python. Chỉ đơn giản là sau khi biểu thức điều kiện của câu lệnh while trở nên False (sai), chương trình sẽ tiến hành xử lý các lệnh tiếp theo mà thôi.

while biểu thức điều kiện :
    Câu lệnh 1
    Câu lệnh 2


Câu lệnh 4
Câu lệnh 4

Ví dụ, chúng ta viết lại ví dụ in ra màn hình các số nhỏ hơn 4 ở trên bằng while else trong python như sau:

num = 0
total = 0

while num < 4:
print(num)
num += 1
total+=num
else:
print("Tổng =",total)
#> 0
#> 1
#> 2
#> Tổng = 6

Tuy nhiên bạn cần chú ý, nếu trong câu lệnh while chứa lệnh break thì kết quả sẽ hoàn toàn khác. Lệnh break là lệnh dùng để thoát khỏi vòng lặp, do đó nếu while bị dừng lại thì các lệnh trong khối else cũng sẽ bị dừng theo.
Ví dụ:

num = 0
total = 0

while num < 4:
if num == 2:
print('!!BREAK!!')
break
print(num)
total+=num
num += 1
else
print("Tổng =",total)

#> 0
#> 1
#> !!BREAK!!

Do lệnh while bị dừng tại num = 2, dẫn theo các lệnh trong khối else cũng bị dừng lại tại đây. Kết quả, lệnh in tổng ra màn hình trong khối else không được thực hiện và chỉ có các số 0 và 1 được in ra màn hình mà thôi.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách sử dụng vòng lặp while trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.