Buổi 5: Vòng lặp for

Hôm nay em sẽ học

  1. for … in range(…) thay cho khối lặp lại n lần
  2. Mẫu tích lũy: tính tổng, tích, đếm
  3. In nhiều số trên cùng một dòng
  4. Đọc n số trên n dòng

Bấm vào slide rồi dùng phím ← → để chuyển, phím F để xem toàn màn hình.

Mở toàn màn hình

1. Kiến thức chính

Lặp lại n lần với range

ScratchPython
lặp lại 5for i in range(5):
các khối bên trongcác dòng thụt vào 4 dấu cách
ViếtBiến i lần lượt là
range(5)0, 1, 2, 3, 4
range(1, 6)1, 2, 3, 4, 5
range(0, 10, 2)0, 2, 4, 6, 8
range(10, 0, -1)10, 9, …, 1
range(a, b) đi từ a đến b − 1. Muốn chạy từ 1 đến n phải viết range(1, n + 1).

Mẫu tích lũy: tổng, tích, đếm

n = int(input())
tong = 0                      # 1. khởi tạo TRƯỚC vòng lặp
for i in range(1, n + 1):
    tong += i                 # 2. cập nhật TRONG vòng lặp
print(tong)                   # 3. in SAU vòng lặp (không thụt lề)
  • Tính tổng: khởi tạo 0. Tính tích: khởi tạo 1. Đếm: khởi tạo 0, gặp số thỏa mãn thì dem += 1.
  • Nếu print bị thụt vào trong vòng lặp, chương trình sẽ in ra n lần.

In trên một dòng – đọc n số trên n dòng

for i in range(1, 6):
    print(i, end=" ")         # in xong thêm dấu cách thay vì xuống dòng
print()                       # xuống dòng

n = int(input())
for _ in range(n):            # dùng _ khi không cần biến đếm
    x = int(input())

Bài học về tốc độ

Vòng lặp 10⁶ lần chạy nhanh, nhưng 10¹⁸ lần thì máy chạy hàng nghìn năm. Khi n rất lớn phải dùng công thức, ví dụ 1 + 2 + … + n = n × (n + 1) / 2 → n * (n + 1) // 2.

Chạy tay

Lập bảng giá trị các biến qua từng vòng lặp trên giấy. Đây là cách tốt nhất để hiểu chương trình và tìm lỗi.

2. Ghi nhớ và lỗi thường gặp

Em viếtVấn đề
for i in range(1, n):bỏ sót số n
tich = 0 rồi tich *= itích luôn bằng 0 – phải khởi tạo 1
tong = 0 đặt trong vòng lặptổng bị đặt lại về 0 ở mỗi vòng
print thụt lề nhầm vào trong vòng lặpin ra quá nhiều dòng

3. Câu hỏi tự kiểm tra

  1. range(2, 10, 3) cho những giá trị nào?
  2. Chương trình sau in ra gì?
s = 0
for i in range(4):
    s += i
print(s)
  1. Muốn tính 1 × 2 × 3 × … × n thì biến tích phải khởi tạo bằng bao nhiêu?

4. Bài tập về nhà

Bài 1 ★ – CHIA35

Input: số nguyên n (3 ≤ n ≤ 1000).

Output: các số trong đoạn từ 1 đến n chia hết cho 3 hoặc cho 5, trên một dòng.

InputOutput
153 5 6 9 10 12 15

Bài 2 ★ – TONGBP

Input: số nguyên n (1 ≤ n ≤ 10⁶).

Output: S = 1² + 2² + … + n².

InputOutput
314
10385

Bài 3 ★★ – DEMAM

Input: dòng đầu là n (1 ≤ n ≤ 10⁴); n dòng tiếp theo, mỗi dòng một số nguyên.

Output: có bao nhiêu số âm.

InputOutput
5
3
-1
0
-7
2
2

Bài 4 ★★★ (thử thách) – HINHTHOI

Input: số nguyên n (1 ≤ n ≤ 20).

Output: hình thoi gồm 2n − 1 dòng bằng dấu *. Ví dụ với n = 3:

Kết quả
  *
 ***
*****
 ***
  *
Gợi ý: in nửa trên (n dòng) giống kim tự tháp, rồi in nửa dưới (n − 1 dòng) bằng vòng lặp chạy ngược range(n - 1, 0, -1).
Cách nộp bài: mỗi bài một file .py đặt tên theo tên bài. Chạy thử với tất cả ví dụ trước khi nộp!

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Zalo