Những mẫu vòng lặp quen thuộc

Bài 4/6 · khoảng 8 phút đọc

Rất nhiều bài toán dùng lại vài mẫu vòng lặp. Học thuộc các mẫu này là đi được rất xa.

Mẫu 1: Đếm

Đếm có bao nhiêu số chia hết cho 3 từ 1 đến 30:

Python
dem = 0
for n in range(1, 31):
if n % 3 == 0:
dem = dem + 1
print("Có", dem, "số chia hết cho 3")

Mẫu 2: Tính tổng

Python
tong = 0
for n in range(1, 11):
tong = tong + n
print("Tổng 1..10 =", tong)

Mẫu 3: Tìm số lớn nhất

Giữ lại giá trị lớn nhất tìm được cho đến lúc này. (Ở đây ta dùng một danh sách điểm trong cặp [ ] — Chương 7 sẽ học kỹ; tạm hiểu for d in diem là "lần lượt lấy từng điểm".)

Python
diem = [7, 9, 4, 10, 6]
lon_nhat = diem[0]
for d in diem:
if d > lon_nhat:
lon_nhat = d
print("Điểm cao nhất:", lon_nhat)

Mẫu 4: Tính tích

Giai thừa 5! = 1 × 2 × 3 × 4 × 5:

Python
kq = 1
for n in range(1, 6):
kq = kq * n
print("5! =", kq)

Lưu ý: với phép tích, giá trị khởi đầu phải là 1 (không phải 0).

Mẫu 5: Kiểm tra "có phần tử nào thoả mãn"

Python
so = 29
co_uoc = False
for i in range(2, so):
if so % i == 0:
co_uoc = True
if co_uoc:
print(so, "không phải số nguyên tố")
else:
print(so, "là số nguyên tố")

Ghi nhớ: các mẫu cơ bản: đếm (dem += 1), tổng (tong += x), lớn nhất, tích (khởi đầu bằng 1), và kiểm tra bằng một biến cờ True/False.

Vì sao khởi đầu `tong = 0` nhưng `kq = 1` khi tính tích?

Vì 0 là phần tử trung hoà của phép cộng, còn 1 là của phép nhân. Nếu khởi đầu tích bằng 0 thì kết quả luôn là 0.

Những mẫu vòng lặp quen thuộc · Lý thuyết Python · PyKid