Khóa học python

Vòng lặp for-else trong Python

0 phút đọc

Vòng lặp for là một trong những cấu trúc điều khiển quan trọng và phổ biến nhất trong Python. Nó cho phép bạn lặp qua các phần tử của một dãy (sequence) như danh sách, tuple, chuỗi, hoặc thậm chí là các đối tượng có thể lặp khác. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về vòng lặp for-else trong Python, cách sử dụng nó với các loại dữ liệu khác nhau, và các ví dụ minh họa cụ thể.

Tổng quan về vòng lặp for-else

Trong hầu hết các ngôn ngữ lập trình, câu lệnh else thường được sử dụng cùng với câu lệnh if. Tuy nhiên, Python cho phép sử dụng câu lệnh else cùng với vòng lặp forwhile. Khối lệnh else sẽ được thực thi khi vòng lặp kết thúc mà không gặp phải câu lệnh break.

Cú pháp của vòng lặp for-else:

python Copy
for biến_lặp in dãy_phần_tử:
    khối_lệnh
else:
    khối_lệnh_else

Trong đó:

  • biến_lặp là biến sẽ nhận giá trị của từng phần tử trong dãy.
  • dãy_phần_tử là dãy các phần tử mà bạn muốn lặp qua.
  • khối_lệnh là khối mã sẽ được thực thi cho mỗi phần tử trong dãy.
  • khối_lệnh_else là khối mã sẽ được thực thi khi vòng lặp kết thúc mà không gặp phải câu lệnh break.

Ví dụ cơ bản về vòng lặp for-else

Hãy bắt đầu với một ví dụ đơn giản để minh họa cách sử dụng vòng lặp for-else:

python Copy
for i in range(1, 4):
    print(i)
else:
    print("Vòng lặp đã kết thúc mà không gặp phải câu lệnh break")

Kết quả:

Copy
1
2
3
Vòng lặp đã kết thúc mà không gặp phải câu lệnh break

Trong ví dụ này, vòng lặp for lặp qua các số từ 1 đến 3 và in ra từng số. Sau khi vòng lặp kết thúc, khối lệnh else sẽ được thực thi và in ra thông báo "Vòng lặp đã kết thúc mà không gặp phải câu lệnh break".

Sử dụng câu lệnh else với vòng lặp for trong Python

Câu lệnh else trong vòng lặp for sẽ chỉ được thực thi nếu vòng lặp không bị kết thúc bởi câu lệnh break. Điều này có nghĩa là nếu vòng lặp kết thúc tự nhiên sau khi lặp qua tất cả các phần tử, khối lệnh else sẽ được thực thi.

Ví dụ:

python Copy
for i in range(1, 4):
    if i == 2:
        break
    print(i)
else:
    print("Vòng lặp đã kết thúc mà không gặp phải câu lệnh break")

Kết quả:

Copy
1

Trong ví dụ này, vòng lặp for sẽ bị kết thúc bởi câu lệnh break khi i bằng 2, do đó khối lệnh else sẽ không được thực thi.

Sử dụng câu lệnh else với vòng lặp while trong Python

Câu lệnh else cũng có thể được sử dụng với vòng lặp while. Khối lệnh else sẽ được thực thi khi điều kiện của vòng lặp while trở thành sai và vòng lặp kết thúc tự nhiên.

Ví dụ:

python Copy
i = 1
while i < 4:
    print(i)
    i += 1
else:
    print("Vòng lặp đã kết thúc mà không gặp phải câu lệnh break")

Kết quả:

Copy
1
2
3
Vòng lặp đã kết thúc mà không gặp phải câu lệnh break

Trong ví dụ này, vòng lặp while lặp qua các số từ 1 đến 3 và in ra từng số. Sau khi điều kiện i < 4 trở thành sai, khối lệnh else sẽ được thực thi và in ra thông báo "Vòng lặp đã kết thúc mà không gặp phải câu lệnh break".

Sử dụng câu lệnh else trong vòng lặp while với câu lệnh break

Câu lệnh else trong vòng lặp while sẽ không được thực thi nếu vòng lặp bị kết thúc bởi câu lệnh break.

Ví dụ:

python Copy
i = 1
while i < 4:
    if i == 2:
        break
    print(i)
    i += 1
else:
    print("Vòng lặp đã kết thúc mà không gặp phải câu lệnh break")

Kết quả:

Copy
1

Trong ví dụ này, vòng lặp while sẽ bị kết thúc bởi câu lệnh break khi i bằng 2, do đó khối lệnh else sẽ không được thực thi.

Vòng lặp lồng nhau trong Python

Vòng lặp lồng nhau là việc sử dụng một hoặc nhiều vòng lặp bên trong một vòng lặp khác. Điều này cho phép thực hiện các tác vụ lặp lại phức tạp hơn.

Ví dụ:

python Copy
for i in range(1, 4):
    for j in range(1, 4):
        print(f"i: {i}, j: {j}")

Kết quả:

Copy
i: 1, j: 1
i: 1, j: 2
i: 1, j: 3
i: 2, j: 1
i: 2, j: 2
i: 2, j: 3
i: 3, j: 1
i: 3, j: 2
i: 3, j: 3

Trong ví dụ này, vòng lặp for bên ngoài lặp qua các số từ 1 đến 3, và vòng lặp for bên trong cũng lặp qua các số từ 1 đến 3. Kết quả là tất cả các cặp giá trị của ij sẽ được in ra.

Sử dụng câu lệnh else với vòng lặp lồng nhau

Bạn cũng có thể sử dụng câu lệnh else với vòng lặp lồng nhau. Khối lệnh else sẽ được thực thi khi vòng lặp bên trong kết thúc tự nhiên mà không gặp phải câu lệnh break.

Ví dụ:

python Copy
for i in range(1, 4):
    for j in range(1, 4):
        if j == 2:
            break
        print(f"i: {i}, j: {j}")
    else:
        print(f"Vòng lặp bên trong đã kết thúc tự nhiên cho i = {i}")

Kết quả:

Copy
i: 1, j: 1
i: 2, j: 1
i: 3, j: 1

Trong ví dụ này, vòng lặp for bên trong sẽ bị kết thúc bởi câu lệnh break khi j bằng 2, do đó khối lệnh else sẽ không được thực thi.

Sử dụng câu lệnh else với vòng lặp for và điều kiện

Câu lệnh else trong vòng lặp for có thể rất hữu ích khi bạn muốn kiểm tra một điều kiện nào đó trong vòng lặp và thực hiện một hành động nếu điều kiện đó không bao giờ được thỏa mãn.

Ví dụ:

python Copy
def contains_even_number(l):
    for ele in l:
        if ele % 2 == 0:
            print("Danh sách chứa số chẵn")
            break
    else:
        print("Danh sách không chứa số chẵn")

contains_even_number([1, 9, 8])
contains_even_number([1, 3, 5])

Kết quả:

Copy
Danh sách chứa số chẵn
Danh sách không chứa số chẵn

Trong ví dụ này, hàm contains_even_number kiểm tra xem danh sách l có chứa số chẵn hay không. Nếu tìm thấy số chẵn, vòng lặp for sẽ bị kết thúc bởi câu lệnh break và khối lệnh else sẽ không được thực thi. Nếu không tìm thấy số chẵn, khối lệnh else sẽ được thực thi và in ra thông báo "Danh sách không chứa số chẵn".

Kết luận

Vòng lặp for-else trong Python là một công cụ mạnh mẽ và linh hoạt, cho phép bạn thực hiện các tác vụ lặp lại một cách hiệu quả và dễ dàng. Bằng cách nắm vững cách sử dụng vòng lặp for-else với các loại dữ liệu khác nhau như danh sách, chuỗi, tuple, từ điển, và các đối tượng có thể lặp khác, bạn có thể viết mã Python ngắn gọn, dễ đọc và hiệu quả hơn. Việc sử dụng câu lệnh else cùng với vòng lặp forwhile cũng giúp bạn kiểm soát luồng thực thi của chương trình một cách linh hoạt và chính xác hơn.

Avatar
Được viết bởi

Admin Team

Gợi ý câu hỏi phỏng vấn

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào