Vòng lặp for

Buổi 5

Python cho Tin học trẻ · Bảng B (THCS)

Buổi 5 – Vòng lặp for1 / 24

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
Buổi 5 – Vòng lặp for2 / 24

Khởi động

Trong Scratch, muốn mèo đi 10 bước, lặp lại 5 lần, em làm thế nào?

  • Khối lặp lại 5
  • Bên trong: khối di chuyển 10 bước
Hôm nay: làm điều đó bằng Python!
Buổi 5 – Vòng lặp for3 / 24

Phần 1: range

Đếm từ đâu đến đâu?
Buổi 5 – Vòng lặp for4 / 24

Lặp lại n lần

ScratchPython
lặp lại 5for i in range(5):
các khối bên trongcác dòng thụt vào
for i in range(5):
    print("Xin chao", i)
Xin chao 0
Xin chao 1
Xin chao 2
Xin chao 3
Xin chao 4
Buổi 5 – Vòng lặp for5 / 24

Các cách dùng range

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, 8, …, 1
range(a, b) đi từ a đến b − 1 (không gồm b). Muốn từ 1 đến n: range(1, n + 1).
Buổi 5 – Vòng lặp for6 / 24

Phần 2: Mẫu tích lũy

Cộng dồn từng chút một
Buổi 5 – Vòng lặp for7 / 24

Tính tổng 1 + 2 + … + n

n = int(input())
tong = 0
for i in range(1, n + 1):
    tong += i
print(tong)
  1. Khởi tạo trước vòng lặp: tong = 0
  2. Cập nhật trong vòng lặp: tong += i
  3. In sau vòng lặp (không thụt lề)
5
15
Buổi 5 – Vòng lặp for8 / 24

Thí nghiệm: thụt lề sai chỗ

n = int(input())
tong = 0
for i in range(1, n + 1):
    tong += i
    print(tong)
5
1
3
6
10
15
print thụt vào → nằm trong vòng lặp → in ra n lần. Thụt lề quyết định khối nào thuộc khối nào!
Buổi 5 – Vòng lặp for9 / 24

Chạy tay – kỹ năng của thám tử

Với n = 4, điền bảng:

Vòngitong sau vòng lặp
trước–0
111
22?
33?
44?
Chạy tay trên giấy giúp em hiểu chương trình và tìm lỗi.
Buổi 5 – Vòng lặp for10 / 24

Phần 3: In và đọc nhiều số

Kỹ thuật hay dùng trong đề thi
Buổi 5 – Vòng lặp for11 / 24

In trên cùng một dòng

for i in range(1, 6):
    print(i, end=" ")
print()
print("Xong")
1 2 3 4 5
Xong
  • end=" ": in xong thì thêm dấu cách thay vì xuống dòng
  • print() cuối cùng để xuống dòng
Buổi 5 – Vòng lặp for12 / 24

Đọc n số trên n dòng

Đề: "Dòng đầu là n. n dòng tiếp theo, mỗi dòng một số nguyên."

n = int(input())
tong = 0
for _ in range(n):
    x = int(input())
    tong += x
print(tong)
Dùng _ khi không cần dùng đến biến đếm.
Buổi 5 – Vòng lặp for13 / 24

Luyện tập

Bài ★ cả lớp · Bài ★★★ thử thách
Buổi 5 – Vòng lặp for14 / 24

Bài 1 ★ – IN1N

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

Output: các số 1, 2, …, n trên một dòng.

InputOutput
51 2 3 4 5
Buổi 5 – Vòng lặp for15 / 24

Bài 2 ★ – TONG1N

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

Output: 1 + 2 + … + n.

InputOutput
515
1000000500000500000
Buổi 5 – Vòng lặp for16 / 24

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

Nếu đề cho n ≤ 10¹⁸ thì sao?

  • Vòng lặp 10¹⁸ lần: máy tính chạy hàng nghìn năm!
  • Dùng công thức toán: 1 + 2 + … + n = n × (n + 1) / 2
n = int(input())
print(n * (n + 1) // 2)
Luôn đọc giới hạn của n trong đề trước khi chọn cách giải.
Buổi 5 – Vòng lặp for17 / 24

Bài 3 ★ – GIAITHUA

Input: số nguyên n (0 ≤ n ≤ 100).

Output: n! = 1 × 2 × … × n (quy ước 0! = 1).

InputOutput
5120
01
Tích lũy phép nhân thì khởi tạo bằng 1, không phải 0!
Buổi 5 – Vòng lặp for18 / 24

Bài 4 ★★ – BANGCC

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

Output: bảng nhân n, 10 dòng.

InputOutput
77 x 1 = 7 7 x 2 = 14 … 7 x 10 = 70
Buổi 5 – Vòng lặp for19 / 24

Bài 5 ★★ – TONGCHAN

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

Output: tổng các số chẵn.

InputOutput
4 3 8 -2 56
Buổi 5 – Vòng lặp for20 / 24

Bài 6 ★★ – TAMGIACSAO

Input: số nguyên n. Output: tam giác n dòng, dòng i có i dấu *.

*
**
***
****

★★★ Mở rộng: in kim tự tháp n dòng.

   *
  ***
 *****
*******
Dòng i có bao nhiêu dấu cách? Bao nhiêu dấu *?
Buổi 5 – Vòng lặp for21 / 24

Bài 7 ★★★ – TONGPS

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

Output: S = 1 + 1/2 + 1/3 + … + 1/n, làm tròn 4 chữ số thập phân.

InputOutput
11.0000
31.8333
Buổi 5 – Vòng lặp for22 / 24

Tóm tắt buổi 5

tong = 0
for i in range(1, n + 1):
    tong += i
print(tong)
  • range(a, b) dừng ở b − 1
  • Tích lũy: khởi tạo → cập nhật → in
  • Tổng khởi tạo 0, tích khởi tạo 1
  • print(x, end=" ") để in cùng dòng
Buổi 5 – Vòng lặp for23 / 24

Bài về nhà

  1. In các số chia hết cho 3 hoặc 5 trong đoạn từ 1 đến n.
  2. Tính S = 1² + 2² + … + n².
  3. Nhập n, rồi n số (mỗi số một dòng). Đếm có bao nhiêu số âm.
Buổi 5 – Vòng lặp for24 / 24
← → chuyển slide · F toàn màn hình