Python - Vòng Lặp Lồng Nhau
Xin chào, các bạn nhà lập trình đam mê! Hôm nay, chúng ta sẽ đi mạo hiểm vào thế giới thú vị của các vòng lặp lồng nhau trong Python. Là người dạy máy tính bạn thân thiện, tôi rất hứng thú để hướng dẫn các bạn trong chuyến hành trình này. Hãy tin tôi, bằng khi kết thúc bài học này, các bạn sẽ lặp như một chuyên gia!
Các Vòng Lặp Lồng Nhau Là Gì?
Trước khi bước vào phần sâu, hãy bắt đầu với những khái niệm cơ bản. Tưởng tượng bạn đang tổ chức tủ quần áo của mình. Bạn đi qua từng giá ( đó là một vòng lặp), và cho mỗi giá, bạn sắp xếp lại tất cả các món đồ trên đó ( đó là một vòng lặp bên trong vòng lặp đầu tiên). Đó chính là điều gì các vòng lặp lồng nhau trong lập trình - các vòng lặp bên trong các vòng lặp khác!
Vòng Lặp Lồng Nhau For trong Python
Hãy bắt đầu với vòng lặp for
, nó như một người bạn thân thiện đáng tin cậy trong thế giới Python.
Cấu Trúc Cơ Bản
Dưới đây là cấu trúc chung của một vòng lặp lồng nhau for:
for outer_variable in outer_sequence:
# Thân vòng lặp ngoài
for inner_variable in inner_sequence:
# Thân vòng lặp trong
Ví Dụ Đơn Giản: Bảng Nhân
Hãy tạo một bảng nhân đơn giản để hiểu rõ hơn:
for i in range(1, 6):
for j in range(1, 6):
print(f"{i} x {j} = {i*j}", end="\t")
print() # Chuyển đến dòng mới sau mỗi hàng
Mã này sẽ đầu ra:
1 x 1 = 1 1 x 2 = 2 1 x 3 = 3 1 x 4 = 4 1 x 5 = 5
2 x 1 = 2 2 x 2 = 4 2 x 3 = 6 2 x 4 = 8 2 x 5 = 10
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9 3 x 4 = 12 3 x 5 = 15
4 x 1 = 4 4 x 2 = 8 4 x 3 = 12 4 x 4 = 16 4 x 5 = 20
5 x 1 = 5 5 x 2 = 10 5 x 3 = 15 5 x 4 = 20 5 x 5 = 25
Hãy phân tích nó:
- Vòng lặp ngoài (
for i in range(1, 6)
) chạy 5 lần, đại diện cho các hàng. - Cho mỗi lần lặp của vòng lặp ngoài, vòng lặp trong (
for j in range(1, 6)
) chạy 5 lần, đại diện cho các cột. - Chúng ta in mỗi kết quả nhân, sử dụng
end="\t"
để thêm một khoảng tab thay vì một dòng mới. - Sau mỗi hàng (lần lặp vòng lặp ngoài), chúng ta in một dòng trống để chuyển đến hàng tiếp theo.
Ví Dụ Thực Tế: Thực Đoàn Ghế
Tưởng tượng bạn là một giáo viên (như tôi!) sắp xếp ghế cho lớp học. Hãy tạo một sơ đồ thực đoàn:
students = ["Alice", "Bob", "Charlie", "David", "Eve"]
rows = 3
seats_per_row = 2
seat_number = 0
for row in range(1, rows + 1):
print(f"Hàng {row}:")
for seat in range(1, seats_per_row + 1):
if seat_number < len(students):
print(f" Ghế {seat}: {students[seat_number]}")
seat_number += 1
else:
print(f" Ghế {seat}: Trống")
print() # Dòng trống giữa các hàng
Điều này sẽ đầu ra:
Hàng 1:
Ghế 1: Alice
Ghế 2: Bob
Hàng 2:
Ghế 1: Charlie
Ghế 2: David
Hàng 3:
Ghế 1: Eve
Ghế 2: Trống
Trong ví dụ này:
- Vòng lặp ngoài lặp qua từng hàng.
- Vòng lặp trong gán sinh viên vào các ghế trong mỗi hàng.
- Chúng ta sử dụng biến
seat_number
để theo dõi sinh viên mà bạn sẽ gán tiếp theo. - Nếu chúng ta sử dụng hết sinh viên, chúng ta đánh dấu các ghế còn lại là "Trống".
Vòng Lặp Lồng Nhau while trong Python
Bây giờ, hãy gặp với vòng lặp while
- vòng lặp while
lồng nhau. Nó như một giám sát cẩn thận kiểm tra điều kiện.
Cấu Trúc Cơ Bản
Dưới đây là cách một vòng lặp lồng nhau while thường trông như thế nào:
while outer_condition:
# Thân vòng lặp ngoài
while inner_condition:
# Thân vòng lặp trong
Ví Dụ: Đỉnh Số
Hãy tạo một đỉnh số để thấy vòng lặp lồng nhau while hoạt động:
row = 1
while row <= 5:
col = 1
while col <= row:
print(col, end=" ")
col += 1
print() # Chuyển đến dòng mới
row += 1
Điều này sẽ đầu ra:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
Hãy phân tích nó:
- Vòng lặp
while
ngoài kiểm soát số hàng (từ 1 đến 5). - Cho mỗi hàng, vòng lặp
while
trong in ra các số từ 1 đến số hàng hiện tại. - Chúng ta tăng
col
trong vòng lặp trong vàrow
trong vòng lặp ngoài.
Ví Dụ Thực Tế: Kiểm Tra Tồn Kho
Tưởng tượng bạn đang quản lý một cửa hàng nhỏ. Bạn cần kiểm tra tồn kho thường xuyên. Hãy mô hình hóa điều này với các vòng lặp lồng nhau while:
inventory = {
"apples": 50,
"bananas": 30,
"oranges": 40
}
days = 1
while days <= 3: # Kiểm tra trong 3 ngày
print(f"Ngày {days} Kiểm Tra Tồn Kho:")
for fruit, quantity in inventory.items():
while quantity > 0:
print(f"Kiểm tra {fruit}...")
quantity -= 10 # Mô hình hóa bán 10 đơn vị mỗi kiểm tra
if quantity <= 20:
print(f"Cảnh báo tồn kho thấp cho {fruit}! Chỉ còn {quantity} lại.")
break # Dừng kiểm tra trái cây này nếu tồn kho thấp
inventory[fruit] = quantity # Cập nhật tồn kho
print(f"Kết thúc ngày {days} Tồn Kho: {inventory}\n")
days += 1
Điều này sẽ đầu ra gần như như thế này:
Ngày 1 Kiểm Tra Tồn Kho:
Kiểm tra apples...
Kiểm tra apples...
Kiểm tra apples...
Cảnh báo tồn kho thấp cho apples! Chỉ còn 20 lại.
Kiểm tra bananas...
Cảnh báo tồn kho thấp cho bananas! Chỉ còn 20 lại.
Kiểm tra oranges...
Kiểm tra oranges...
Cảnh báo tồn kho thấp cho oranges! Chỉ còn 20 lại.
Kết thúc ngày 1 Tồn Kho: {'apples': 20, 'bananas': 20, 'oranges': 20}
Ngày 2 Kiểm Tra Tồn Kho:
Kiểm tra apples...
Cảnh báo tồn kho thấp cho apples! Chỉ còn 10 lại.
Kiểm tra bananas...
Cảnh báo tồn kho thấp cho bananas! Chỉ còn 10 lại.
Kiểm tra oranges...
Cảnh báo tồn kho thấp cho oranges! Chỉ còn 10 lại.
Kết thúc ngày 2 Tồn Kho: {'apples': 10, 'bananas': 10, 'oranges': 10}
Ngày 3 Kiểm Tra Tồn Kho:
Kiểm tra apples...
Cảnh báo tồn kho thấp cho apples! Chỉ còn 0 lại.
Kiểm tra bananas...
Cảnh báo tồn kho thấp cho bananas! Chỉ còn 0 lại.
Kiểm tra oranges...
Cảnh báo tồn kho thấp cho oranges! Chỉ còn 0 lại.
Kết thúc ngày 3 Tồn Kho: {'apples': 0, 'bananas': 0, 'oranges': 0}
Trong ví dụ này:
- Vòng lặp
while
ngoài mô hình hóa việc kiểm tra tồn kho trong 3 ngày. - Chúng ta sử dụng một vòng lặp
for
để lặp qua mỗi loại trái cây trong tồn kho. - Vòng lặp
while
trong mô hình hóa việc kiểm tra và bán mỗi loại trái cây cho đến khi tồn kho thấp hoặc hết hàng. - Chúng ta sử dụng
break
để dừng việc kiểm tra loại trái cây nếu số lượng giảm xuống 20 hoặc dưới.
Kết Luận
Xin chúc mừng! Bạn vừa đã nắm vững kỹ năng của các vòng lặp lồng nhau trong Python. Hãy nhớ, các vòng lặp lồng nhau là công cụ mạnh mẽ, nhưng hãy sử dụng chúng một cách khôn ngoan. Chúng có thể làm cho mã của bạn chạy chậm hơn nếu không sử dụng hiệu quả.
Như với tất cả các khái niệm lập trình, thực hành là chìa khóa để thành thạo. Thử tạo các tình huống vòng lặp lồng nhau của riêng bạn - có thể là bàn cờ chess, hoặc lịch học hàng tuần. Các khả năng là vô hạn!
Hãy tiếp tục lập trình, học hỏi, và quan trọng nhất, hãy thích thú với nó! Chờ đợi buổi tiếp theo, đây là người dạy máy tính bạn thân thiện kính chào. Chúc các bạn lặp như một chuyên gia!
Credits: Image by storyset