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:
dem = 0for n in range(1, 31): if n % 3 == 0: dem = dem + 1print("Có", dem, "số chia hết cho 3")Mẫu 2: Tính tổng
tong = 0for n in range(1, 11): tong = tong + nprint("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".)
diem = [7, 9, 4, 10, 6]lon_nhat = diem[0]for d in diem: if d > lon_nhat: lon_nhat = dprint("Điểm cao nhất:", lon_nhat)Mẫu 4: Tính tích
Giai thừa 5! = 1 × 2 × 3 × 4 × 5:
kq = 1for n in range(1, 6): kq = kq * nprint("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"
so = 29co_uoc = Falsefor i in range(2, so): if so % i == 0: co_uoc = Trueif 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.