Skip to main content

Bài 19 - Sử dung vòng lặp for trong Python

Mục tiêu: Hiểu cách sử dụng vòng lặp for để duyệt qua các đối tượng iterable và ứng dụng trong xử lý dữ liệu.

Iterations - phát âm /ˌɪt̬.əˈreɪ.ʃən/ các vòng lặp 

iterable - phát âm /ˈɪdərəb(ə)l/ có thể duyệt hay có thể lặp

1. Cơ Bản về Vòng Lặp for

  • Mục đích: Duyệt qua từng phần tử của iterable (list, tuple, string, dict,...)
  • Cú pháp:

    for item in iterable:
        # Khối lệnh xử lý
  • Hoạt động:
    • Tự động gọi iter() để tạo iterator
    • Dùng next() lấy từng phần tử cho đến hết
    • Tự động xử lý StopIteration

Ví dụ cơ bản:

fruits = ["táo", "cam", "bưởi"]
for fruit in fruits:
    print(fruit.upper())
# Output: TÁO → CAM → BƯỞI

2. Duyệt Các Kiểu Dữ Liệu Khác Nhau

Kiểu dữ liệuVí dụCách duyệt
String"Hello"Từng ký tự
List/Tuple[1, 2, 3]Từng phần tử
Dictionary{"a": 1, "b": 2}Keys, values hoặc items
Set{1, 2, 3}Từng phần tử
Fileopen("data.txt")Từng dòng

Ví dụ chi tiết:

# Dictionary
scores = {"Alice": 90, "Bob": 85}
for name, score in scores.items():
    print(f"{name}: {score} điểm")

# String
for char in "Python":
    print(char, end='-')  # P-y-t-h-o-n-

# File
with open("data.txt") as file:
    for line in file:
        print(line.strip())

3. Công Cụ Hỗ Trợ Vòng Lặp

  1. range(): Tạo dãy số

    for i in range(5):        # 0-4
    for i in range(1, 10, 2): # 1,3,5,7,9
  2. enumerate(): Lấy cả chỉ số và giá trị

    colors = ["đỏ", "xanh", "vàng"]
    for index, color in enumerate(colors):
        print(f"Vị trí {index}: {color}")
  3. zip(): Kết hợp nhiều iterable

    names = ["An", "Bình"]
    scores = [9.0, 8.5]
    for name, score in zip(names, scores):
        print(f"{name}: {score}")

4. Điều Khiển Vòng Lặp

LệnhTác dụngVí dụ
breakThoát vòng lặp ngay lập tứcDừng khi gặp số âm
continueBỏ qua lần lặp hiện tạiBỏ qua số chẵn
elseChạy khi vòng lặp kết thúc tự nhiênTìm số nguyên tố

Ví dụ ứng dụng:

 

# Tìm số âm đầu tiên
numbers = [3, 7, -2, 9]
for n in numbers:
    if n < 0:
        print("Tìm thấy số âm!")
        break
else:
    print("Không có số âm")

# Bỏ qua số chẵn
for num in range(10):
    if num % 2 == 0:
        continue
    print(num, end=' ')  # 1 3 5 7 9

5. Vòng Lặp Lồng Nhau

  • Ứng dụng: Xử lý ma trận, kết hợp dữ liệu
  • Ví dụ: Nhân bảng cửu chương

    for i in range(1, 4):       # 1-3
        for j in range(1, 4):   # 1-3
            print(f"{i} x {j} = {i*j}", end='\t')
        print()  # Xuống dòng sau mỗi hàng
    
    # Output:
    # 1x1=1   1x2=2   1x3=3
    # 2x1=2   2x2=4   2x3=6
    # 3x1=3   3x2=6   3x3=9

6. List Comprehension

  • Mục đích: Tạo list từ vòng lặp for ngắn gọn
  • Cú pháp: [expression for item in iterable]

So sánh:

# Cách thông thường
squares = []
for x in range(5):
    squares.append(x**2)

# List comprehension
squares = [x**2 for x in range(5)]  # [0, 1, 4, 9, 16]

Nâng cao:

# Có điều kiện
even_squares = [x**2 for x in range(10) if x % 2 == 0]

# Lồng nhau
matrix = [[1,2], [3,4]]
flatten = [num for row in matrix for num in row]  # [1,2,3,4]

7. Bài Tập Thực Hành

Câu 1: Đảo ngược từ trong chuỗi

sentence = "Python is awesome"
words = sentence.split()
reversed_sentence = " ".join(word[::-1] for word in words)
print(reversed_sentence)  # "nohtyP si emosewa"

Câu 2: Tìm cặp số có tổng bằng mục tiêu

numbers = [2, 7, 11, 15]
target = 9

for i in range(len(numbers)):
    for j in range(i+1, len(numbers)):
        if numbers[i] + numbers[j] == target:
            print(f"Vị trí: {i} và {j}")

8. Tài Nguyên Học Tập

Vòng lặp for là công cụ mạnh mẽ để xử lý dữ liệu trong Python! 🚀