Xem thêm

Vòng Lặp Trong Python: Cách Sử Dụng và Bài Tập

Huy Erick
Trong Python, các câu lệnh được thực hiện một cách tuần tự từ trên xuống dưới. Tuy nhiên, đôi khi bạn muốn thực hiện một khối các câu lệnh nhiều lần, bạn có thể sử...

Trong Python, các câu lệnh được thực hiện một cách tuần tự từ trên xuống dưới. Tuy nhiên, đôi khi bạn muốn thực hiện một khối các câu lệnh nhiều lần, bạn có thể sử dụng vòng lặp (loop). Chúng ta cũng sẽ tìm hiểu về một thứ không thể thiếu trong các ngôn ngữ lập trình đó là vòng lặp.

I. 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 thực hiện 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.

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 
    tong = tong + i
KeyboardInterrupt

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 =)).

II. For Trong Python

Vòng lặp for trong python được sử dụng để lặp một biến qua một dãy (List hoặc String) theo thứ tự mà chúng xuất hiện. Vòng lặp for trong python được sử dụng để lặp một phần của chương trình nhiều lần. Nếu số lần lặp là cố định thì vong lặp for được khuyến khích sử dụng, còn nếu số lần lặp không cố định thì nên sử dụng vòng lặp while.

Sau đây là cú pháp của vòng lặp for trong python:

for bien_vong_lap in day_sequense:
    # khối lệnh

Nếu một mảng day_sequense gồm một danh sách các biểu thức, nó được ước lượng đầu tiên. Sau đó, item đầu tiên trong mảng được gán cho biến vòng lặp bien_vong_lap. Tiếp theo, các khối lệnh bên trong vòng lặp được thực thi và khối lệnh này được thực thi tới khi mảng này đã được lặp xong.

Dưới đây là ví dụ minh họa vòng lặp for trong Python:

Ví dụ 1: Lặp một chuỗi

# Ví dụ lặp một chuỗi
for letter in "Python":
    print ("Chữ cái hiện tại:", letter);

Kết quả:

Chữ cái hiện tại: P
Chữ cái hiện tại: y
Chữ cái hiện tại: t
Chữ cái hiện tại: h
Chữ cái hiện tại: o
Chữ cái hiện tại: n

Ví dụ 2: Lặp một mảng

# Ví dụ lặp một mảng
fruits = ['chuối', 'táo', 'xoài']
for fruit in fruits:
    print ("Bạn có thích ăn:", fruit);

Kết quả:

Bạn có thích ăn: chuối
Bạn có thích ăn: táo
Bạn có thích ăn: xoài

Lặp qua index của mảng

Một cách khác để lặp qua mỗi item là bởi chỉ mục index bên trong mảng đó. Bạn theo dõi ví dụ đơn giản sau:

# Ví dụ lặp một mảng
fruits = ['chuối', 'táo', 'xoài']
for index in range(len(fruits)):
    print ("Bạn có thích ăn:", fruits[index]);

Kết quả:

Bạn có thích ăn: chuối
Bạn có thích ăn: táo
Bạn có thích ăn: xoài

Ở đây, chúng ta sử dụng hàm len(), có sẵn trong Python, để cung cấp tổng số phần tử trong tuple cũng như hàm range() để cung cấp cho chúng ta dãy thực sự để lặp qua đó.

Sử dụng lệnh else trong vòng lặp for

Python cho phép bạn có một lệnh else để liên hợp với một lệnh vòng lặp.

  • Nếu câu lệnh else được sử dụng với vòng lặp for, thì câu lệnh else được thực thi khi vòng lặp kết thúc.

  • Nếu câu lệnh else được sử dụng với vòng lặp while, câu lệnh else được thực thi khi điều kiện là false.

for num in range(10, 21): #lặp num từ 10 tới 20
    for i in range(2, num): #lặp i từ 2 tới num - 1
        if num % i == 0: #num có chia hết cho i hay không
            print ("%d không phải là số nguyên tố." %(num))
            break; # thoát vòng lặp for hiện tại
    else: # else là một phần của vòng lặp for
        print ("%d là số nguyên tố" %(num))

Kết quả:

10 không phải là số nguyên tố.
11 là số nguyên tố
12 không phải là số nguyên tố.
13 là số nguyên tố
14 không phải là số nguyên tố.
15 không phải là số nguyên tố.
16 không phải là số nguyên tố.
17 là số nguyên tố
18 không phải là số nguyên tố.
19 là số nguyên tố
20 không phải là số nguyên tố.

III. Thoát Vòng Lặp Trong Python

Hướng dẫn cách sử dụng lệnh break trong python. Bạn sẽ học được cách dùng lệnh break để thoát khỏi vòng lặp trong python sau bài học này.

Lệnh break trong python

Lệnh break trong python được sử dụng để thoát khỏi vòng lặp trong python. Các vòng lặp trong python như vòng lặp while hoặc vòng lặp for sẽ buộc phải kết thúc khi câu lệnh break được thực thi.

Câu lệnh break trong python được sử dụng kết hợp với câu lệnh if trong python và được miêu tả trong khối lệnh while hoặc khối lệnh for 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
    if biểu thức điều kiện:
        break

Sử dụng lệnh break để thoát khỏi vòng lặp for trong python

Chúng ta sử dụng lệnh break để thoát khỏi vòng lặp for trong python theo điều kiện mà bạn muốn. Lệnh for 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 for đều bị dừng giữa chừng.

Ví dụ, chúng ta dừng lệnh tính tổng một dãy số nguyên dương nhỏ hơn 10 khi tổng đó lớn hơn 5 như sau:

sum = 0
for num in range(0,10):
    print(num)
    sum += num
    if sum > 5:
        break
print("Tổng = ",sum)
#> 0
#> 1
#> 2
#> 3
#> Tổng = 6

Sử dụng lệnh break để thoát khỏi vòng lặp while trong python

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 lệnh tính tổng một dãy số nguyên dương nhỏ hơn 10 khi tổng đó lớn hơn 5 như sau:

num = 0
sum = 0
while num < 10:
    print(num)
    sum += num
    num += 1
    if sum > 5:
        break
print("Tổng = ",sum)
#> 0
#> 1
#> 2
#> 3
#> Tổng = 6

Lại nữa, câu lệnh break thường được sử dụng kết hợp với vòng lặp while True để thoát khỏi một vòng lặp vô hạn trong python. Ví dụ chúng ta sử dụng vòng lặp while True trong ví dụ trên như sau:

num = 0
sum = 0
while True:
    print(num)
    sum += num
    num += 1
    if sum > 5:
        break
print("Tổng = ",sum)
#> 0
#> 1
#> 2
#> 3
#> Tổng = 6

IV. Vòng Lặp Vô Hạn Trong Python

Cùng tìm hiểu về vòng lặp vô hạn trong python. Bạn sẽ biết vòng lặp vô hạn trong python là gì, cách tạo ra vòng lặp vô hạn trong python cũng như là cách thoát khỏi vòng lặp vô hạn trong python sau bài học này.

Vòng lặp vô hạn trong python là gì

Vòng lặp vô hạn trong python là một chuỗi các lệnh mà khi được viết ra sẽ kéo dài vô tận, trừ khi có sự can thiệp từ bên ngoài. Vòng lặp vô hạn có thể được thực hiện một cách có chủ đích.

Cách tạo ra vòng lặp vô hạn trong python

Ngoại trừ những trường hợp đặc biệt thì trong phần lớn các trường hợp, chúng ta đã vô tình tạo ra vòng lặp vô hạn trong python trong các lỗi logic khi xử lý vòng lặp.

Cách thoát khỏi vòng lặp vô hạn trong python

Cách tốt nhất để thoát khỏi vòng lặp vô hạn trong python đó là bạn ĐỪNG tạo ra nó. Trong trường hợp bạn cần sử dụng tới vòng lặp vô hạn trong python, hãy đảm bảo rằng mình đã chuẩn bị một cách để thoát ra khỏi vòng lặp vô hạn đó bằng cách thêm biểu thức điều kiện, dùng lệnh if hoặc lệnh break bên trong vòng lặp.

1