Bài 20

Lệnh lặp for

Biết được ý nghĩa của vùng giá trị tạo bởi lệnh range(), biết được chức năng của lệnh lặp for và cách dùng trong Python.

🚀

1. Khởi động (Engagement)

Em có thể đã gặp những trường hợp cần thực hiện một số công việc lặp đi lặp lại nhiều lần. Ví dụ:

  • Để kể tên tất cả các bạn trong lớp có 30 học sinh, em cần lần lượt đọc tên từng bạn
  • Để đếm số lượng các số chia hết cho 3 trong khoảng từ 1 đến 50, em có thể kiểm tra lần lượt các số từ 1 đến 50 và ghi ra các số chia hết cho 3 (chẳng hạn, 3, 6, 9,...) rồi đếm các số đó

💡 Câu hỏi suy ngẫm: Em có thể xác định được trong mỗi ví dụ trên công việc nào cần phải lặp và được lặp lại bao nhiêu lần không?

Ngôn ngữ lập trình bậc cao có các câu lệnh cho phép viết một cách ngắn gọn các bước cần thực hiện lặp đi lặp lại để tạo thành một cấu trúc lặp.

📖

2. Hình thành kiến thức (Knowledge)

1. Lệnh lặp for

Lệnh for là lệnh lặp với số lần biết trước. Số lần lặp thường được xác định bởi vùng giá trị của lệnh range().

a) Hàm range()

Lệnh range(n) trả lại vùng giá trị gồm n số từ 0 đến n - 1.

Các dạng của range():

  • range(n): Tạo dãy từ 0 đến n-1 (n số)
  • range(start, stop): Tạo dãy từ start đến stop-1
  • range(start, stop, step): Tạo dãy với bước nhảy step

Ví dụ:

range(10)    # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range(2, 8)  # 2, 3, 4, 5, 6, 7
range(1, 10, 2)  # 1, 3, 5, 7, 9
Python Script

b) Cú pháp lệnh for

Cú pháp:

for <biến_chạy> in range(n):
    <khối lệnh>
Python Script

Cơ chế hoạt động:

  • Khi thực hiện, ở mỗi vòng lặp biến chạy sẽ được gán lần lượt các giá trị trong vùng giá trị của lệnh range() và thực hiện khối lệnh.
  • Khối lệnh cần viết lùi vào và thẳng hàng (thường là 1 tab hoặc 4 dấu cách).

Ví dụ cơ bản:

S = 0
for k in range(10):
    S = S + k
print(S)    # 45 (tổng 0 + 1 + ... + 9)
Python Script

Giải thích: Lệnh range(10) trả lại một vùng giá trị gồm 10 số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Lệnh for sẽ thực hiện 10 lần lặp, mỗi lần lặp ứng với một giá trị k trong vùng giá trị trên. Sau lệnh lặp for trên, biến S sẽ có giá trị là tổng 0 + 1 + ... + 9 = 45.

2. Ví dụ ứng dụng

Ví dụ 1: Tính tổng các số tự nhiên chẵn nhỏ hơn n

n = 10
S = 0
for k in range(n):
    if k%2 == 0:    # Điều kiện k là số chẵn là k%2 = 0
        S = S + k
print(S)    # 20 (0 + 2 + 4 + 6 + 8)
Python Script

Ví dụ 2: Đếm số các số nguyên nhỏ hơn n và là bội của 3

n = 20
C = 0
for k in range(n):
    if k%3 == 0:    # Điều kiện k là bội của 3 là k%3 = 0
        C = C + 1
print(C)    # 7 (0, 3, 6, 9, 12, 15, 18)
Python Script
🧩

3. Luyện tập (Practice)

Bài tập thực hành

Bài tập 1:

Thực hiện đoạn chương trình sau trong chế độ gõ lệnh trực tiếp của Python để tính tổng 0 + 1 + ... + 9. Tổng này có giá trị bao nhiêu? Giải thích kết quả.

S = 0
for k in range(10):
    S = S + k
print(S)
Python Script

Bài tập 2:

Viết chương trình nhập số tự nhiên n từ bàn phím. Tính và in ra tổng các số từ 1 đến n.

Gợi ý: Sử dụng range(1, n+1) để tạo dãy từ 1 đến n.

Bài tập 3:

Viết chương trình nhập số tự nhiên n. In ra màn hình các số chẵn nhỏ hơn n.

Bài tập 4:

Viết chương trình tính tổng các số lẻ nhỏ hơn n.

Thực hành tại máy:

Viết chương trình in ra bảng cửu chương trình của một số m nhập từ bàn phím.

Ví dụ: Nếu nhập m = 3, in ra:

3 x 1 = 3
3 x 2 = 6
...
3 x 10 = 30
Python Script
🌟

4. Vận dụng (Application)

Bài tập vận dụng

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

Viết chương trình nhập số tự nhiên n và tính n! (giai thừa của n).

Gợi ý: n! = 1 × 2 × 3 × ... × n

n = int(input("Nhập số tự nhiên n: "))
giai_thua = 1
for i in range(1, n+1):
    giai_thua = giai_thua * i
print(n, "! =", giai_thua)
Python Script

Bài tập 2: Kiểm tra số nguyên tố

Viết chương trình nhập số tự nhiên n > 1 và kiểm tra xem n có phải là số nguyên tố không.

Gợi ý: Số nguyên tố là số chỉ chia hết cho 1 và chính nó.

n = int(input("Nhập số tự nhiên n > 1: "))
la_so_nguyen_to = True
for i in range(2, n):
    if n % i == 0:
        la_so_nguyen_to = False
        break

if la_so_nguyen_to:
    print(n, "là số nguyên tố")
else:
    print(n, "không phải là số nguyên tố")
Python Script

Bài tập 3: In hình tam giác

Viết chương trình nhập số tự nhiên n và in ra tam giác vuông cân chiều cao n.

Ví dụ: n = 4

*
**
***
****
Python Script

Thảo luận:

  • Lợi ích của việc sử dụng vòng lặp for so với viết lệnh thủ công?
  • Khi nào nên dùng range(n), khi nào nên dùng range(1, n+1)?
  • Lệnh break trong vòng lặp có tác dụng gì?

Ghi nhớ kiến thức 🎯

  • ✅ range(n) tạo dãy từ 0 đến n-1 (n số).
  • ✅ range(start, stop) tạo dãy từ start đến stop-1.
  • ✅ for là lệnh lặp với số lần biết trước.
  • ✅ Khối lệnh trong for cần thụt lề đúng quy cách.
  • ✅ Biến tích lũy cần khởi tạo giá trị ban đầu bên ngoài vòng lặp.

Chúc mừng bạn đã hoàn thành bài học này! 🏆