Lặp lại cùng một cách làm
Muốn cộng các số hoặc đếm phần tử thỏa điều kiện, ta lặp qua từng giá trị. Bước quan trọng là khởi tạo biến và cập nhật đúng bên trong vòng lặp.
Đọc range trước khi tính
range(n) cho các số 0 đến n−1 khi n dương; range(a, b) đi từ a đến trước b; range(a, b, step) thêm bước khác 0. Cận b không được lấy. for cũng có thể duyệt trực tiếp phần tử danh sách hoặc xâu.
Biến tổng thường bắt đầu 0 và cộng giá trị cần lấy. Biến đếm cũng bắt đầu 0 nhưng mỗi lần thỏa điều kiện chỉ tăng 1. Vị trí print trong hoặc ngoài vòng lặp quyết định in mỗi lượt hay chỉ in kết quả cuối.
Lập bảng tích lũy
```python
s = 0
for k in range(2, 7, 2):
s = s + k
print(s)
```
| k | s sau khi cộng |
|---|---|
| 2 | 2 |
| 4 | 6 |
| 6 | 12 |
range lấy 2, 4, 6 rồi dừng trước 7. print ngoài vòng lặp nên chỉ in 12.
Thử vận dụng
range(1, 5) chứa những giá trị nào?
Cận cuối 5 không được lấy.
Cận đầu được nêu là 1.
Đúng: có bốn giá trị từ 1 đến 4.
range không chỉ gồm hai đầu mút.
Lời giải
Bắt đầu 1, bước mặc định 1 và dừng trước 5.
Đếm số chẵn
```python
count = 0
for x in [3, 8, 2, 5]:
if x % 2 == 0:
count += 1
print(count)
```
Hai giá trị 8 và 2 làm count tăng nên kết quả 2. Nếu cộng x thay vì 1, ta tính tổng số chẵn 10, không còn đếm.
Ví dụ xem cách làm
Liệt kê range(5, 0, -2).
Lời giải
5, 3, 1. Bước âm giảm 2 và dừng trước khi vượt qua cận 0 theo chiều giảm.
Ví dụ xem cách làm
Nếu đặt s = 0 vào đầu mỗi lượt của vòng lặp cộng ở ví dụ 1, kết quả cuối sẽ là gì?
Lời giải
6, vì mỗi lượt xóa tổng cũ rồi chỉ cộng k hiện tại. Muốn tích lũy, khởi tạo s trước vòng lặp.
Những điều cần nhớ
Liệt kê các giá trị vòng lặp trước khi tính. Phân biệt cộng giá trị với tăng biến đếm và giữ biến tích lũy qua các lượt.
Đang học