Vòng lặp trong Python

Vòng lặp là gì?

Có thể có tình huống, khi bạn cần thực thi một khối mã nhiều lần. Nói chung, các câu lệnh được thực hiện tuần tự: Câu lệnh đầu tiên trong một hàm được thực thi đầu tiên, tiếp theo là câu lệnh thứ hai, v.v.

Ngôn ngữ lập trình cung cấp các cấu trúc điều khiển khác nhau cho phép thực thi những câu lệnh phức tạp. Vòng lặp là một trong những cấu trúc điều khiển đó.

Vòng lặp cho phép chúng ta thực thi một câu lệnh hoặc một nhóm các câu lệnh nhiều lần. Sau đây là lược đồ tổng quát từ một câu lệnh lặp trong hầu hết các ngôn ngữ lập trình:

Lược đồ vòng lặp trong Python

Ngôn ngữ lập trình Python cung cấp các loại vòng lặp sau để xử lý các yêu cầu lặp:

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

Vòng lặp while trong Python

Vòng lặp while trong ngôn ngữ lập trình Python sẽ thực thi khối lệnh của nó nhiều lần miễn là biểu thức điều kiện vẫn trả về TRUE.

Cú pháp vòng lặp while trong Python

Cú pháp của một vòng lặp while trong ngôn ngữ lập trình Python như sau:

while expression:
   statement(s)

Ở đây, statement(s) có thể là một câu lệnh đơn hoặc một khối các câu lệnh. expression có thể là bất kỳ biểu thức nào trả về giá trị TRUE. Vòng lặp while sẽ thực thi khi điều kiện là TRUE.

Khi điều kiện trả về FALSE, vòng lặp while kết thúc và chuyển tới dòng lệnh ngay sau khối lệnh while.

Trong Python, tất cả các câu lệnh được thụt vào bởi cùng một số ký tự khoảng trắng, những ký tự khoảng trắng này được coi là một phần của một khối mã. Python sử dụng thụt lề làm phương pháp nhóm các câu lệnh.

Lược đồ vòng lặp while trong Python

Lược đồ vòng lặp while trong Python

Ở đây, điểm mấu chốt của vòng lặp while là vòng lặp có thể không bao giờ chạy. Khi điều kiện được kiểm tra trả về FALSE, thân vòng lặp sẽ bị bỏ qua và câu lệnh đầu tiên sau vòng lặp while sẽ được thực thi.

Ví dụ về vòng lặp while trong Python

#!/usr/bin/python

count = 0
while (count < 9):
   print 'The count is:', count
   count = count + 1

print "Good bye!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau

The count is: 0
The count is: 1
The count is: 2
The count is: 3
The count is: 4
The count is: 5
The count is: 6
The count is: 7
The count is: 8
Good bye!

Khối lệnh while ở đây bao gồm các câu lệnh print và đếm tăng, được thực hiện lặp đi lặp lại cho đến khi số đếm không còn nhỏ hơn 9. Với mỗi lần lặp, giá trị hiện tại của số đếm được in ra và sau đó tăng thêm 1.

Vòng lặp while vô hạn trong Python

Một vòng lặp trở thành vòng lặp vô hạn nếu biểu thức điều kiện không bao giờ trả về FALSE. Bạn phải thận trọng khi sử dụng các vòng lặp while vì khả năng điều kiện này không bao giờ trả về giá trị FALSE. Điều này dẫn đến một vòng lặp không bao giờ kết thúc. Một vòng lặp như vậy được gọi là một vòng lặp vô hạn.

Một vòng lặp vô hạn có thể hữu ích trong lập trình máy khách / máy chủ nơi máy chủ cần chạy liên tục để các chương trình máy khách có thể giao tiếp với nó khi được yêu cầu.

#!/usr/bin/python

var = 1
while var == 1 :  # This constructs an infinite loop
   num = raw_input("Enter a number: ")
   print "You entered: ", num

print "Good bye!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau

Enter a number: 20
You entered: 20
Enter a number: 29
You entered: 29
Enter a number: 3
You entered: 3
Enter a number between: Traceback (most recent call last):
   File "test.py", line 5, in <module>
      num = raw_input("Enter a number :")
KeyboardInterrupt

Ví dụ trên đi vào một vòng lặp vô hạn và bạn cần sử dụng CTRL + C để thoát khỏi chương trình.

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

Python hỗ trợ sử dụng câu lệnh else trong các vòng lặp như sau:

  • 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 đã duyệt hết danh sách.
  • Nếu câu lệnh else được sử dụng với vòng lặp while thì câu lệnh else được thực hiện khi điều kiện lặp trả về FALSE.

Ví dụ sau minh họa sự kết hợp của câu lệnh else với vòng lặp while:

#!/usr/bin/python

count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau

0 is less than 5
1 is less than 5
2 is less than 5
3 is less than 5
4 is less than 5
5 is not less than 5

Lệnh while một dòng trong Python

Tương tự như cú pháp câu lệnh if một dòng, nếu mệnh đề while của bạn chỉ có một câu lệnh đơn, nó có thể được đặt trên cùng một dòng với câu lệnh while.

Dưới đây là cú pháp và ví dụ về lệnh while một dòng:

#!/usr/bin/python

flag = 1
while (flag): print 'Given flag is really true!'
print "Good bye!"

Tốt hơn là không thử ví dụ trên vì nó sẽ tạo vòng lặp vô hạn và bạn cần nhấn các phím CTRL + C để thoát.

Vòng lặp for trong Python

Vòng lặp for trong Python có khả năng lặp lại các phần tử của bất kỳ danh sách hoặc chuỗi nào.

Cú pháp vòng lặp for trong Python

for iterating_var in sequence:
   statements(s)

Nếu một danh sách chứa một danh sách biểu thức, nó được đánh giá đầu tiên. Sau đó, phần tử đầu tiên trong danh sách được gán cho biến lặp iterating_var. Tiếp theo, khối lệnh của vòng lặp được thực thi. Mỗi phần tử trong danh sách được gán cho iterating_var và khối lệnh được thực thi cho đến khi toàn bộ danh sách được duyệt hết.

Lược đồ vòng lặp for trong Python

Lược đồ vòng lặp for trong Python

Ví dụ vòng lặp for trong Python

#!/usr/bin/python

for letter in 'Python':     # First Example
   print 'Current Letter :', letter

fruits = ['banana', 'apple',  'mango']
for fruit in fruits:        # Second Example
   print 'Current fruit :', fruit

print "Good bye!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau:

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : h
Current Letter : o
Current Letter : n
Current fruit : banana
Current fruit : apple
Current fruit : mango
Good bye!

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

Ngôn ngữ lập trình Python cho phép sử dụng một vòng lặp bên trong một vòng lặp khác gọi là vòng lặp lồng nhau. Phần sau đây cho thấy một vài ví dụ để minh họa khái niệm này.

Cú pháp vòng lặp lồng nhau trong Python

Cú pháp cho vòng lặp for lồng nhau trong ngôn ngữ lập trình Python như sau:

for iterating_var in sequence:
   for iterating_var in sequence:
      statements(s)
   statements(s)

Cú pháp cho vòng lặp while lồng nhau trong ngôn ngữ lập trình Python như sau:

while expression:
   while expression:
      statement(s)
   statement(s)

Một lưu ý cuối cùng về vòng lặp lồng nhau là bạn có thể đặt bất kỳ loại vòng lặp nào bên trong bất kỳ loại vòng lặp nào khác. Ví dụ, một vòng lặp for có thể nằm trong vòng lặp while hoặc ngược lại.

Ví dụ vòng lặp for trong Python

Chương trình sau đây sử dụng vòng lặp lồng nhau để tìm các số nguyên tố từ 2 đến 100:

#!/usr/bin/python

i = 2
while(i < 100):
   j = 2
   while(j <= (i/j)):
      if not(i%j): break
      j = j + 1
   if (j > i/j) : print i, " is prime"
   i = i + 1

print "Good bye!"

Khi đoạn mã trên được thực thi, nó tạo ra kết quả như sau:

2 is prime
3 is prime
5 is prime
7 is prime
11 is prime
13 is prime
17 is prime
19 is prime
23 is prime
29 is prime
31 is prime
37 is prime
41 is prime
43 is prime
47 is prime
53 is prime
59 is prime
61 is prime
67 is prime
71 is prime
73 is prime
79 is prime
83 is prime
89 is prime
97 is prime
Good bye!

Điều khiển vòng lặp

Đôi khi bạn muốn thay đổi cách vòng lặp duyệt các phần tử trong danh sách. Các lệnh điều khiển vòng lặp sẽ giúp bạn làm điều này.

Python hỗ trợ các câu lệnh điều khiển vòng lặp sau:

  • Lệnh break.
  • Lệnh continue.
  • Lệnh pass.

Lệnh break trong Python

Lệnh break chấm dứt vòng lặp hiện tại và tiếp tục thực hiện tại câu lệnh tiếp theo, giống như câu lệnh break truyền thống trong C.

Việc sử dụng phổ biến nhất của break là khi một số điều kiện bên ngoài được kích hoạt yêu cầu thoát nhanh khỏi vòng lặp. Câu lệnh break có thể được sử dụng trong cả vòng lặp while và vòng lặp for.

Nếu bạn đang sử dụng các vòng lặp lồng nhau, câu lệnh break dừng thực thi vòng lặp trong cùng và bắt đầu thực thi dòng mã tiếp theo sau vòng lặp.

Cú pháp lệnh break trong Python

Cú pháp của lệnh break trong Python như sau:

break

Sơ đồ lệnh break trong Python

Sơ đồ lệnh break trong C#

Ví dụ lệnh break trong Python

#!/usr/bin/python

for letter in 'Python':     # First Example
   if letter == 'h':
      break
   print 'Current Letter :', letter
  
var = 10                    # Second Example
while var > 0:              
   print 'Current variable value :', var
   var = var -1
   if var == 5:
      break

print "Good bye!"

Đây là kết quả của chương trình trên:

Current Letter : P
Current Letter : y
Current Letter : t
Current variable value : 10
Current variable value : 9
Current variable value : 8
Current variable value : 7
Current variable value : 6
Good bye!

Lệnh continue trong Python

Lệnh continue trong Python không bắt buộc vòng lặp kết thúc, nó bắt buộc vòng lặp tiếp theo diễn ra, bỏ qua bất kỳ đoạn dòng lệnh nào ở sau nó.

Lệnh continue có thể được sử dụng trong cả vòng lặp while và vòng lặp for.

Cú pháp lệnh continue trong Python

Cú pháp của lệnh continue trong Python như sau:

continue

Sơ đồ lệnh continue trong Python

Sơ đồ lệnh continue trong C#

Ví dụ lệnh continue trong Python

#!/usr/bin/python

for letter in 'Python':     # First Example
   if letter == 'h':
      continue
   print 'Current Letter :', letter

var = 10                    # Second Example
while var > 0:              
   var = var -1
   if var == 5:
      continue
   print 'Current variable value :', var
print "Good bye!"

Kết quả của chương trình như sau:

Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : o
Current Letter : n
Current variable value : 9
Current variable value : 8
Current variable value : 7
Current variable value : 6
Current variable value : 4
Current variable value : 3
Current variable value : 2
Current variable value : 1
Current variable value : 0
Good bye!

Lệnh pass trong Python

Lệnh pass trong Python được sử dụng khi một câu lệnh được yêu cầu về mặt cú pháp nhưng bạn không muốn bất kỳ lệnh hoặc mã nào được thực thi.

Câu lệnh pass là một toán tử null; Không có gì xảy ra khi nó thực thi. Câu lệnh pass chỉ hữu ích trong trường hợp bạn muốn xử lý trường hợp đó nhưng bạn chưa viết code để xử lý.

Cú pháp lệnh pass trong Python

Cú pháp của lệnh pass trong Python như sau:

pass

Ví dụ lệnh pass trong Python

#!/usr/bin/python

for letter in 'Python': 
   if letter == 'h':
      pass
      print 'This is pass block'
   print 'Current Letter :', letter

print "Good bye!"

Kết quả của chương trình như sau:

Current Letter : P
Current Letter : y
Current Letter : t
This is pass block
Current Letter : h
Current Letter : o
Current Letter : n
Good bye!


Bài viết liên quan:

Kiểu chuỗi trong Python là gì? Làm sao để khai báo biến và sử dụng các hàm tích hợp, định dạng kiểu chuỗi trong Python?

Kiểu số trong Python là gì? Python có những kiểu dữ liệu số nào? Các hàm tiện ích về số trong Python?

Lệnh rẽ nhánh trong Python là gì? Python cũng cấp những loại lệnh rẽ nhánh nào?