Bước lặp là việc thực hiện một block các đoạn mã nhiều lần lặp đi lặp lại, một chương trình được triển khai có tính chất như vậy được gọi là một vòng lặp (loop). Có rất nhiều cách để triển khai một vòng lặp, với Python chúng ta có thể sử dụng hai từ khóa while hoặc for để thể hiện một vòng lặp. Cách sử dụng hai từ khóa này cũng sẽ khác nhau. Trong bài viết dưới đây, Stringee sẽ cùng các bạn tìm hiểu cách tạo một vòng lặp trong Python sử dụng từ khóa while nhé.

>>> Xem thêm các bài viết trong chuỗi bài hướng dẫn lập trình Python tại đây:

1. Vòng lặp while trong Python

1.1. While trong Python có đặc tính gì?

Trước hết, chúng ta cần hiểu rằng trong lập trình tồn tại hai kiểu lặp: lặp có giới hạn và lặp vô hạn. Lặp có giới hạn tức là số lần thực hiện lặp sẽ được thể hiện cụ thể tại thời điểm vòng lặp bắt đầu. Ngược lại, số lần thực hiện lặp sẽ không được thể hiện khi bắt đầu nếu chúng ta sử dụng một vòng lặp vô hạn.

Vòng lặp sử dụng while là một vòng lặp vô tận. Ta sẽ không thể biết được số lần lặp cho đến khi nó kết thúc là bao nhiêu, có thể chỉ là một lần nhưng cũng hoàn toàn có thể vòng lặp sẽ không bao giờ kết thúc.


Chúng ta sẽ cùng xem cách sử dụng câu lệnh while trong Python:

while <expr>:
    <statement(s)>

Trong cú pháp sử dụng while, chúng ta thấy cũng có hiện diện một mệnh đề điều kiện <expr>, nó sẽ trả về một giá trị logic và điều khiển việc thực hiện vòng lặp. <statement(s)> thể hiện cho một block code cần được thực hiện lặp đi lặp lại, đây được gọi là body của một vòng lặp. Nó sẽ được đánh dấu là bắt đầu và kết thúc bằng việc điều chỉnh dấu thụt đầu dòng như là trong cấu trúc if.

1.2. Vòng lặp while thực hiện như thế nào?

Khi một vòng lặp while bắt đầu, <expr> sẽ được tính toán và trả về một giá trị logic Boolean. Nếu true, body của vòng lặp sẽ được thực hiện và <expr> sẽ được thực hiện tính toán lại trong vòng lặp tiếp theo. Nó sẽ tiếp tục thực hiện body cho đến khi giá trị điều kiện trả về giá trị false.

>>> n = 0
>>> while n < 5:
...     n += 1
...     print(n)
... 
1
2
3
4
5

Đoạn code trên sẽ được thực hiện như sau:

  • Bước 1: Đầu tiên, n được gán = 0, khi kiểm tra điều kiện while có n = 0 < 5 do đó các statements bên dưới sẽ được thực hiện.

N được gán bằng n + 1 vậy n sẽ = 1.

In ra giá trị n là 1.

  • Bước 2: n = < 5 và nó sẽ thực hiện các bước như Bước 1
  • Đến lần lặp thứ 6, khi này n = 6 > 5. Từ đây, giá trị điều kiện đã là false và chương trình sẽ thoát khỏi vòng lặp while.

2. Bỏ qua vòng lặp hoặc thoát khỏi vòng lặp

Có hai cách để tác động vào vòng lặp while mà ta có thể sử dụng với ngôn ngữ Python:

  • break: lập tức dừng thực thi và thoát khỏi vòng lặp while.
  • continue: lập tức dừng thực thi vòng lặp hiện tại và nhảy việc thực hiện lên đầu của vòng lặp, chuyển sang vòng lặp tiếp theo.

2.1. Break

Cách sử dụng break và continue có thể được minh họa bằng hình ảnh dưới đây:

Dưới đây là một đoạn code minh họa sử dụng break để thoát khỏi vòng lặp:

n = 0
while n < 5:  
  n += 1
  if n == 4:
    print('end if n = 4')
    break
 print(n)
print('exit app')

Output của đoạn code này là:

1
2
3
end if n = 4
exit app

Trong đoạn code này khi n được tăng đến giá trị bằng 4 thì vòng lặp bị ngắt và chương trình tiếp tục chạy xuống dưới. Đây chính là cách sử dụng và công dụng của từ khóa break.

2.2. Continue

Cũng là với ví dụ vừa rồi, chúng ta sẽ thay break bằng continue và xem thử có những gì khác biệt.

n = 0
while n < 5:
  n += 1
  if n == 4:
    print('end if n = 4')
    continue
  print(n)
print('exit app')

Cùng chạy đoạn code này:

1
2
3
end if n = 4
5
exit app

Ta có thể thấy tại dòng thứ bảy khi sử dụng continue, giá trị n tại thời điểm mà mệnh đề điều kiện thỏa mãn sẽ là 4 và đoạn mã sẽ thực hiện đến từ khóa continue.

Tại đây, ứng dụng của chúng ta bỏ qua các đoạn mã thực thi bên dưới và lập tức quay lại đầu để thực hiện một vòng lặp mới. Sau đó, vì điều kiện của vòng lặp while là n < 5 vẫn đúng nên chương trình tiếp tục được thực thi cho đến khi nó không còn đúng nữa.

>>> Xem thêm bài viết:

- Bài 1: Cài đặt Python và tạo dựng môi trường làm việc

- Bài 2: Biến và kiểu dữ liệu cơ bản trong Python

- Sử dụng map reduce trong MongoDB

2.3. Else trong vòng lặp while

Giống với mệnh đề if, else sẽ được thực hiện khi mệnh đề điều kiện của nó không trả về kết quả đúng nữa, điều này cũng hoàn toàn đúng với vòng lặp else.

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

Nhưng nhìn và cú pháp trên, nó sẽ khác gì với cú pháp dưới đây?

while <expr>:
    <statement(s)>
<additional_statement(s)>

Chúng ta đã biết, <additional_statement(s)> luôn được thực hiện sau khi kết thúc vòng lặp while, tuy nhiên, else chỉ thực hiện các statements nếu điều kiện trong while của nó trả về kết quả sai. Tức là, nếu vòng lặp while bị dừng lại vì statement break, các statement trong else sẽ không được thực thi.

n = 5
while n > 0:
  n -= 1
  print(n)
  if n == 2:
    break
else:
  print('loop done')

Ta sẽ thấy khi break thì chương trình sẽ không chạy hết nữa:

4
3
2

3. Một vòng lặp vô tận

Dựa trên các điều kiện mà ta đã biết về vòng lặp while, một vòng lặp vô tận là một vòng lặp mà câu điều kiện kiểm tra của nó luôn đúng. Chúng ta có thể xem xét ví dụ sau:

while True:
  print('bar')
bar
bar
bar
bar
bar
bar
^Cbar
bar
bar
Traceback (most recent call last):
  File "/Users/duyenthai/Volumes/Workspaces/MyWorkspace/Repositories/PythonDemo/while-infinite.py", line 2, in <module>
    print('bar')
KeyboardInterrupt

Chương trình này được ngắt bởi tổ hợp phím Ctrl + C tạo một tín hiệu ngừng từ bàn phím. Ngược lại, chương trình có thể sẽ chạy không bao giờ dừng.

Rõ ràng ở đây, True không thể nào trở thành false hoặc không thì chúng ta sẽ cùng gặp một vấn đề rất lớn. Vì thế, khi sử dụng while True sẽ khởi tạo một vòng lặp vô tận và trên lý thuyết sẽ thực hiện mãi mãi.

Nghe thì có vẻ việc sử dụng vòng lặp này khá là vô lý và không có tính thực tiễn để áp dụng vào các chương trình, nhưng hoàn toàn ngược lại. Nó rất phổ biến trong các chương trình mà các lập trình viên phát triển, cấu trúc này có thể được sử dụng như sau:

while True:
    if <expr1>:  # One condition for loop termination
        break
    ...
    if <expr2>:  # Another termination condition
        break
    ...
    if <expr3>:  # Yet another
        break

Pattern này sẽ cho phép lập trình viên tạo cho phép các chương trình của mình có thể chạy cho đến khi gặp một điều kiện nào đó xảy ra.

Kết bài

While loop là một cách để thực hiện vòng lặp trong Python, trên đây là những chia sẻ của Stringee về kiến thức này. Mong rằng các bạn có thể áp dụng được nó vào các chương trình của mình.


Stringee Communication APIs là giải pháp cung cấp các tính năng giao tiếp như gọi thoại, gọi video, tin nhắn chat, SMS hay tổng đài CSKH cho phép tích hợp trực tiếp vào ứng dụng/website của doanh nghiệp nhanh chóng. Nhờ đó giúp tiết kiệm đến 80% thời gian và chi phí cho doanh nghiệp bởi thông thường nếu tự phát triển các tính năng này có thể mất từ 1 - 3 năm.

Bộ API giao tiếp của Stringee hiện đang được tin dùng bởi các doanh nghiệp ở mọi quy mô, lĩnh vực ngành nghề như TPBank, VOVBacsi24, VNDirect, Shinhan Finance, Ahamove, Logivan, Homedy,  Adavigo, bTaskee…

Quý bạn đọc quan tâm xin mời đăng ký NHẬN TƯ VẤN TẠI ĐÂY: