PHP
Python

Trang chủ

Tìm hiểu vòng lặp for trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
03/01/2025
10 phút đọc
Theo dõi Vietnix trên

Tìm hiểu vòng lặp for trong Python

Vòng lặp for là một cấu trúc lệnh quan trọng mà bất kỳ nhà phát triển Python nào cũng cần phải nắm vững. Chức năng cốt lõi của nó là cung cấp một cơ chế linh hoạt để lặp qua các phần tử trong một tập hợp, như string, tuple hoặc list. Trong bài viết này mình sẽ giúp bạn tìm hiểu thêm về cấu trúc, nguyên lý hoạt động và cách áp dụng vòng lặp for trong Python.

Vòng lặp for trong Python

Vòng lặp for trong Python cho phép bạn duyệt qua từng phần tử của một dãy, chẳng hạn như list, tuple hoặc string. Vòng lặp này sẽ thực hiện một hành động giống nhau trên mỗi phần tử của dãy. Bắt đầu bằng từ khóa for, sau đó là một biến đại diện cho phần tử hiện tại trong dãy. Từ khóa in liên kết biến này với dãy bạn muốn lặp. Cuối tiêu đề vòng lặp luôn có dấu hai chấm (:), và khối code thụt vào phía dưới sẽ được thực thi một lần cho mỗi phần tử trong dãy.

image 666
Tìm hiểu vòng lặp for trong Python 6

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

for iterating_var in sequence:
   statement(s)

Trong đó:

    • iterating_var là biến mà giá trị của từng phần tử trong dãy sẽ được gán vào trong mỗi lần lặp.

    • statement(s) là khối code mà bạn muốn thực thi lặp đi lặp lại.

Trước khi vòng lặp bắt đầu, sequence sẽ được đánh giá. Nếu đó là một list, biểu thức list (nếu có) sẽ được tính toán trước. Sau đó, phần tử đầu tiên (ở vị trí chỉ mục 0) trong dãy sẽ được gán cho biến iterating_var.

Trong mỗi lần lặp, khối lệnh statement(s) sẽ được thực thi với giá trị hiện tại của iterating_var. Tiếp theo, phần tử kế tiếp trong dãy sẽ được gán cho iterating_var, và vòng lặp sẽ tiếp tục cho đến khi toàn bộ dãy được duyệt hết.

Flowchart của vòng lặp for trong Python

Sơ đồ luồng dưới đây minh họa cách hoạt động của vòng lặp for:

Flowchart của vòng lặp for trong Python
Flowchart của vòng lặp for trong Python

Vòng lặp for trong Python với string

Một chuỗi (string) là một dãy các ký tự Unicode, mỗi ký tự có một chỉ mục vị trí. Vì string là một dãy, bạn có thể duyệt qua từng ký tự của nó bằng vòng lặp for.

Ví dụ sau sẽ so sánh từng ký tự và hiển thị ký tự đó nếu nó không phải là nguyên âm (‘a’, ‘e’, ‘i’, ‘o’, ‘u’).

zen = '''
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
'''
for char in zen:
   if char not in 'aeiou':
      print (char, end='')

Khi thực thi mã này, bạn sẽ nhận được kết quả sau:

Btfl s bttr thn gly.
Explct s bttr thn mplct.
Smpl s bttr thn cmplx.
Cmplx s bttr thn cmplctd.

Giải thích:

  • Đoạn mã trên định nghĩa một chuỗi nhiều dòng được lưu trong biến zen.
  • Vòng lặp for char in zen: sẽ duyệt qua từng ký tự trong chuỗi zen, gán lần lượt các ký tự cho biến char.
  • Câu lệnh if char not in 'aeiou': kiểm tra xem ký tự char có phải là nguyên âm hay không. Nếu ký tự đó không phải là nguyên âm, thì: print(char, end='') sẽ in ký tự char ra màn hình, nhưng không xuống dòng sau mỗi ký tự (vì end='' ). Điều này làm cho các ký tự in liên tiếp nhau trên cùng một dòng.

Bằng cách này, chương trình sẽ in ra tất cả các ký tự không phải nguyên âm trong chuỗi zen.

Vòng lặp for trong Python với Tuple

Tuple trong Python cũng là một kiểu dữ liệu dạng chuỗi có chỉ mục, vì vậy mình có thể duyệt qua từng phần tử của chúng bằng vòng lặp for.

Ở ví dụ sau, vòng lặp for sẽ duyệt qua một tuple chứa các số nguyên và tính tổng của tất cả các số:

numbers = (34,54,67,21,78,97,45,44,80,19)
total = 0
for num in numbers:
   total += num
print ("Total =", total)

Khi chạy mã này, kết quả như sau:

Total = 539

Vòng lặp for trong Python với List

Tương tự như tuple, list trong Python cũng là một kiểu dữ liệu dạng chuỗi có chỉ mục. Vì vậy, bạn có thể duyệt qua từng phần tử của chúng bằng vòng lặp for.

Trong ví dụ tiếp theo, vòng lặp for sẽ duyệt qua một list các số nguyên và chỉ in ra các số chia hết cho 2:

numbers = [34,54,67,21,78,97,45,44,80,19]
total = 0
for num in numbers:
   if num%2 == 0:
      print (num)

Khi chạy đoạn code này, kết quả sẽ như sau:

34
54
78
44
80

Vòng lặp for trong Python với object range

Trong Python, hàm range() được tích hợp sẵn trả về một đối tượng iterator, giúp tạo ra một chuỗi các số. Đối tượng này chứa các số nguyên từ giá trị bắt đầu (start) đến giá trị kết thúc (stop), với bước nhảy (step). Chúng ta có thể sử dụng vòng lặp for kết hợp với range() một cách hiệu quả.

Hàm range() có cú pháp như sau:

range(start, stop, step)

Trong đó:

  • Start: Giá trị bắt đầu của phạm vi. Tùy chọn. Mặc định là 0.
  • Stop: Phạm vi kết thúc trước giá trị stop.
  • Step: Các số nguyên trong phạm vi tăng thêm giá trị step. Tùy chọn, mặc định là 1.

Trong ví dụ này, mình sẽ minh họa cách sử dụng range() với vòng lặp for.

for num in range(5):
   print (num, end=' ')
print()
for num in range(10, 20):
   print (num, end=' ')
print()
for num in range(1, 10, 2):
   print (num, end=' ')

Khi bạn chạy mã trên, nó sẽ tạo ra kết quả sau:

0 1 2 3 4
10 11 12 13 14 15 16 17 18 19
1 3 5 7 9

Vòng lặp For với Dictionaries trong Python

Khác với list, tuple hay string, kiểu dữ liệu dictionary trong Python không phải là một sequence, vì các phần tử của nó không có chỉ mục vị trí. Tuy nhiên, bạn vẫn có thể duyệt qua một dictionary bằng vòng lặp for.

Khi chạy một vòng lặp for đơn giản trên một đối tượng dictionary, vòng lặp sẽ duyệt qua các key có trong dictionary đó.

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
   print (x)

Đoạn code trên khi chạy sẽ cho ra kết quả như sau:

10
20
30
40

Khi đã lấy được key, bạn có thể dễ dàng truy cập đến giá trị tương ứng bằng cách sử dụng toán tử ngoặc vuông [] hoặc phương thức get().

Ví dụ sau đây minh họa cách truy cập giá trị bằng toán tử ngoặc vuông.

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers:
   print (x,":",numbers[x])

Kết quả của đoạn code trên là:

10 : Ten
20 : Twenty
30 : Thirty
40 : Forty

Các phương thức items(), keys()values() của lớp dict trả về các view object dict_items, dict_keysdict_values tương ứng. Những đối tượng này là các iterator, vì vậy bạn có thể dùng vòng lặp for để duyệt qua chúng.

Object dict_items là một danh sách các tuple chứa cặp key-value. Chúng ta có thể sử dụng vòng lặp for để duyệt qua các phần tử của nó như sau:

numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
for x in numbers.items():
   print (x)

Đoạn code trên sẽ tạo ra kết quả sau:

(10, ‘Ten’)
(20, ‘Twenty’)
(30, ‘Thirty’)
(40, ‘Forty’)

Sử dụng else với vòng lặp for

Python cho phép sử dụng lệnh else kèm với vòng lặp. Tuy nhiên, lệnh else chỉ được thực thi khi vòng lặp đã hoàn tất việc duyệt qua danh sách.

Ví dụ sau minh họa việc kết hợp else với vòng lặp for để tìm các số nguyên tố trong khoảng từ 10 đến 20.

# Vòng lặp for để duyệt từ 10 đến 20
for num in range(10, 20):  
   # Vòng lặp for để duyệt các ước số
   for i in range(2,num): 
      # If statement để xác định ước số đầu tiên
      if num%i == 0:      
         # Để tính ước số thứ hai
         j=num/i          
         print ("%d bằng %d * %d" % (num,i,j))
         # Để chuyển sang số tiếp theo
         break 
      else:                  
         print (num, "là một số nguyên tố")
         break

Khi chạy đoạn code trên, bạn sẽ nhận được kết quả như sau:

10 bằng 2 * 5

11 là một số nguyên tố

12 bằng 2 * 6

13 là một số nguyên tố

14 bằng 2 * 7

15 bằng 3 * 5

16 bằng 2 * 8

17 là một số nguyên tố

18 bằng 2 * 9

19 là một số nguyên tố

Giải thích:

  • Đầu tiên, mình duyệt qua các số từ 10 đến 19 bằng vòng lặp for num in range(10, 20):.
  • Với mỗi số num, mình dùng một vòng lặp for i in range(2,num): để kiểm tra xem num có ước số nào khác 1 và chính nó không.
  • Nếu num chia hết cho i (tức là num % i == 0), có nghĩa là i là một ước số của num. Mình in ra kết quả và dùng lệnh break để thoát khỏi vòng lặp for i.
  • Nếu không tìm thấy ước số nào trong vòng lặp for i, thì số đó là số nguyên tố. Trường hợp này, vòng lặp for i sẽ không thực hiện câu lệnh break đầu tiên và đi xuống lệnh else để in số nguyên tố ra màn hình rồi mới dùng break thoát khỏi vòng lặp for i.

Lời kết

Chúng ta vừa cùng nhau khám phá chi tiết về vòng lặp for trong Python, một công cụ quan trọng trong lập trình. Hy vọng những kiến thức này sẽ giúp bạn hiểu rõ và sử dụng vòng lặp một cách hiệu quả trong các dự án của mình. Hãy tiếp tục thực hành để nâng cao kỹ năng lập trình Python của bạn.

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn