Skip to content

🧭 6.2 Cú pháp vòng for

📖 Giới thiệu

Vòng lặp for là công cụ giúp thực hiện một công việc nhiều lần một cách tự động. Thay vì viết lặp lại code, ta dùng for để Python tự động lặp cho chúng ta.

Mục tiêu bài học:

  • Hiểu cú pháp và cách hoạt động của vòng for
  • Sử dụng for với range(), list và string
  • Áp dụng vào các bài toán thực tế

🔧 Cú pháp

1. 🔄 Vòng for với range():

python
# Cú pháp cơ bản
for biến in range(số_lần_lặp):
    # Code thực hiện mỗi lần lặp
    
# Ví dụ
for i in range(5):
    print(f"Lần thứ {i + 1}")

2. 📝 Vòng for với list:

python
# Duyệt list
danh_sach = ["táo", "cam", "chuối"]
for trai_cay in danh_sach:
    print(f"Tôi thích {trai_cay}")

3. 🔤 Vòng for với string:

python
# Duyệt từng ký tự
ten = "Python"
for ky_tu in ten:
    print(f"Ký tự: {ky_tu}")

🔬 Phân tích & Giải thích chi tiết

1. 🔍 Vòng for hoạt động như thế nào?

python
# Ví dụ đơn giản
print("Trước vòng lặp")

for i in range(3):
    print(f"  Lần lặp {i}: Xin chào!")
    
print("Sau vòng lặp")

# Kết quả:
# Trước vòng lặp
#   Lần lặp 0: Xin chào!
#   Lần lặp 1: Xin chào!
#   Lần lặp 2: Xin chào!
# Sau vòng lặp

2. 🎯 Tên biến trong vòng for

python
# Biến i trong vòng for
for i in range(5):
    print(f"i = {i}")

# Có thể dùng tên bất kỳ
for so in range(3):
    print(f"Số: {so}")

for lan in range(2):
    print(f"Lần {lan + 1}")
    
# Biến vẫn tồn tại sau vòng lặp
print(f"Giá trị cuối cùng của i: {i}")

3. 🔢 Các dạng vòng for với range

python
# Dạng 1: Lặp n lần (0 đến n-1)
for i in range(5):
    print(f"Số: {i}")  # 0, 1, 2, 3, 4

# Dạng 2: Từ start đến stop-1
for i in range(2, 7):
    print(f"Số: {i}")  # 2, 3, 4, 5, 6

# Dạng 3: Có bước nhảy
for i in range(0, 10, 2):
    print(f"Số chẵn: {i}")  # 0, 2, 4, 6, 8

# Dạng 4: Đếm ngược
for i in range(5, 0, -1):
    print(f"Đếm ngược: {i}")  # 5, 4, 3, 2, 1

💻 Ví dụ minh họa

Ví dụ 1: Tính tổng các số

python
# tinh_tong.py
print("➕ TÍNH TỔNG CÁC SỐ")
print("=" * 25)

# Nhập số cuối
n = int(input("Tính tổng từ 1 đến: "))

# Cách 1: Dùng vòng for
tong = 0
for i in range(1, n + 1):
    tong += i
    print(f"Cộng {i}: tổng = {tong}")

print(f"\n📊 KẾT QUẢ:")
print(f"Tổng từ 1 đến {n} = {tong}")

# Cách 2: Dùng công thức
tong_cong_thuc = n * (n + 1) // 2
print(f"Kiểm tra bằng công thức: {tong_cong_thuc}")
print(f"Kết quả đúng: {tong == tong_cong_thuc}")

Ví dụ 2: In bảng nhân

python
# bang_nhan.py
print("✖️ BẢNG NHÂN")
print("=" * 15)

# Nhập số
so = int(input("Nhập số cần tạo bảng nhân: "))

print(f"\n📋 BẢNG NHÂN {so}:")
print("-" * 15)

# In bảng nhân từ 1 đến 10
for i in range(1, 11):
    ket_qua = so * i
    print(f"{so} x {i:2} = {ket_qua:3}")

# Bonus: In bảng đẹp hơn
print(f"\n🎨 BẢNG NHÂN ĐẸP:")
print("╔════════════════╗")
print(f"║  BẢNG NHÂN {so:2}  ║")
print("╠════════════════╣")

for i in range(1, 11):
    ket_qua = so * i
    print(f"║ {so:2} x {i:2} = {ket_qua:3}   ║")
    
print("╚════════════════╝")

Ví dụ 3: Vẽ hình tam giác

python
# ve_tam_giac.py
print("🔺 VẼ TAM GIÁC")
print("=" * 15)

# Nhập chiều cao
chieu_cao = int(input("Chiều cao tam giác: "))

# Tam giác số
print(f"\n🔢 TAM GIÁC SỐ:")
for i in range(1, chieu_cao + 1):
    for j in range(1, i + 1):
        print(j, end=" ")
    print()  # Xuống dòng

# Tam giác sao
print(f"\n⭐ TAM GIÁC SAO:")
for i in range(1, chieu_cao + 1):
    for j in range(i):
        print("*", end=" ")
    print()

# Tam giác cân
print(f"\n🔺 TAM GIÁC CÂN:")
for i in range(1, chieu_cao + 1):
    # In khoảng trắng
    for j in range(chieu_cao - i):
        print(" ", end="")
    # In sao
    for j in range(i):
        print("* ", end="")
    print()

🏋️ Thực hành

Bài tập 1: Đếm số chẵn, lẻ

Nhiệm vụ: Đếm số chẵn và lẻ từ 1 đến n

python
n = int(input("Nhập n: "))

so_chan = 0
so_le = 0

for i in range(1, n + 1):
    if i % 2 == 0:
        so_chan += 1
    else:
        so_le += 1

print(f"Từ 1 đến {n}:")
print(f"Số chẵn: {so_chan}")
print(f"Số lẻ: {so_le}")

Bài tập 2: Tìm số lớn nhất

Nhiệm vụ: Nhập n số và tìm số lớn nhất

python
n = int(input("Nhập bao nhiêu số: "))

so_lon_nhat = None  # Chưa có số nào

for i in range(n):
    so = int(input(f"Nhập số thứ {i + 1}: "))
    
    if so_lon_nhat is None or so > so_lon_nhat:
        so_lon_nhat = so

print(f"Số lớn nhất: {so_lon_nhat}")

Bài tập 3: Tính giai thừa

Nhiệm vụ: Tính n! = 1 × 2 × 3 × ... × n

python
n = int(input("Tính giai thừa của: "))

giai_thua = 1

print(f"Tính {n}!:")
for i in range(1, n + 1):
    giai_thua *= i
    print(f"{i}! = {giai_thua}")

print(f"\nKết quả: {n}! = {giai_thua}")

📋 Tóm tắt

Cú pháp vòng for cơ bản:

python
for biến in iterable:
    # Code thực hiện mỗi lần lặp

Các dạng thường gặp:

DạngCú phápMục đích
Lặp n lầnfor i in range(n)Thực hiện việc gì đó n lần
Duyệt listfor item in listXử lý từng phần tử
Duyệt stringfor char in stringXử lý từng ký tự
Có chỉ sốfor i in range(len(list))Cần biết vị trí phần tử

Mẹo sử dụng:

python
# ✅ Tên biến có ý nghĩa
for hoc_sinh in danh_sach_lop:
    print(hoc_sinh)

# ✅ Dùng enumerate khi cần chỉ số
for i, gia_tri in enumerate(danh_sach):
    print(f"{i}: {gia_tri}")

# ✅ Dùng _ cho biến không dùng
for _ in range(5):
    print("Hello")  # Không quan tâm giá trị i

Lưu ý quan trọng:

  1. 🎯 Thụt lề: Code trong vòng for phải thụt lề đồng nhất
  2. 🔄 Biến lặp: Tự động thay đổi mỗi lần lặp
  3. 🚪 Thoát sớm: Dùng break để thoát, continue để bỏ qua
  4. 📏 range(): Không bao gồm số cuối

Chuẩn bị cho bài tiếp theo:

Bài tiếp theo sẽ học về 🔁 Lặp với list, string - duyệt các cấu trúc dữ liệu!


💡 Mẹo: Luôn kiểm tra thụt lề - Python rất nhạy cảm với khoảng trắng!

🧭 Thực hành: Thử viết vòng for đơn giản trước khi làm bài phức tạp!

🐍 Khóa học Python căn bản bằng tiếng Việt