Yêu cầu cần đạt

  • Biết được ý nghĩa của vùng giá trị tạo bởi lệnh range().
  • Biết được chức năng của lệnh lặp for và cách dùng trong Python.

Sau bài này em sẽ:

Em có thể đã gặp những trường hợp cần thực hiện một số công việc lặp đi lặp lại nhiều lần. Ví dụ, để kể tên tất cả các bạn trong lớp có 30 học sinh, em cần lần lượt đọc tên từng bạn; để đếm số lượng các số chia hết cho 3 trong khoảng từ 1 đến 50, em có thể kiểm tra lần lượt các số từ 1 đến 50 và ghi ra các số chia hết cho 3 (chẳng hạn, 3, 6, 9,...) rồi đếm các số đó. Ngôn ngữ lập trình bậc cao có các câu lệnh cho phép viết một cách ngắn gọn các bước cần thực hiện lặp đi lặp lại để tạo thành một cấu trúc lập trình được gọi là cấu trúc lặp.

Em có thể xác định được trong mỗi ví dụ trên công việc nào cần phải lặp và được lặp lại bao nhiêu lần không?

1. Lệnh for

Hoạt động 1

Hoạt động 1 Làm quen với lệnh lặp for
Thực hiện đoạn chương trình sau trong chế độ gõ lệnh trực tiếp của Python để tính tổng 0+1+...+9 Tổng này có giá trị bao nhiêu? Giải thích kết quả.
>>> S=0
>>> for kin range(10):
S S=S+k
>>> print(S)
45

Trong đoạn chương trình trên, lệnh range(10) trả lại một vùng giá trị gồm 10 số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Lệnh for sẽ thực hiện 10 lần lặp, mỗi lần lặp ứng với một giá trị k trong vùng giá trị trên. Sau lệnh lặp for trên, biến S sẽ có giá trị là tổng 0+1+...+9=45

Lệnh range(n) trả lại vùng giá trị gồm n số từ 0 đến n−1 Cú pháp của lệnh lặp với số lần biết trước for trong Python như sau:
for <i> in range(n):
<khối lệnh>

Hình 20.1. Flowchart titled 'Hình 20.1' showing a loop: 'i=0' -> 'Khối lệnh' -> diamond shape '<i<n-1>' branching to 'Đúng' (leading to 'i=i+1' and back to 'Khối lệnh') and 'Sai' (exiting the loop).

Khi thực hiện, ở mỗi vòng lặp biến i sẽ được gán lần lượt các giá trị trong vùng giá trị của lệnh range() và thực hiện <khối lệnh>.

Ví dụ 1.

Ví dụ 1. Tính tổng các số tự nhiên chẵn nhỏ hơn n, với n cho trước (n=10).
n=10
s=0
fork in range(n):
if k%2==0:
S=S+k
print(S)

Text 'Điều kiện k là số chẵn là k%2 = 0' pointing to 'if k%2 == 0:'.

Ví dụ 2.

Ví dụ 2. Đếm số các số nguyên nhỏ hơn n (n=20) và là bội của 3.
n=20
c=0
for k in range(n):
if k%3==0:
C=C+1
print(C)

for là lệnh lặp với số lần biết trước. Số lần lặp thường được xác định bởi vùng giá trị của lệnh range().

Với giá trị n cho trước, so sánh giá trị S trong đoạn chương trình sau với tổng 1+2+...+n.
S=0
fork in range(1,n+1):
S=S+k

2. Lệnh range

Hoạt động 2

Hoạt động 2 Tìm hiểu vùng giá trị xác định bởi lệnh range()
Quan sát các lệnh for sau và so sánh kết quả in ra để biết vùng giá trị được xác định bởi lệnh range(). Lưu ý, lệnh print() có thêm tham số để in bộ dữ liệu theo hàng ngang.
>>> for k in range(3,10):
print(k, end = "")
3 4 5 6 7 8 9
>>> for k in range(0,15):
print(k, end = ")
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Lệnh tạo vùng giá trị range() có các dạng sau:
range (stop) trả lại vùng giá trị từ 0 đến stop - 1.
range (start, stop) trả lại vùng giá trị từ start đến stop - 1.
Ví dụ, range(n) cho vùng gồm các số 0,1,...,n−1.
range(1,n+1) cho vùng gồm các số 1, 2,..., n.
range(0,99) cho vùng giá trị gồm các số 0, 1, 2,..., 98.
range (100, 1) cho vùng rỗng.

Lệnh tạo vùng giá trị có cú pháp range (start, stop) trả lại vùng giá trị gồm các số nguyên liên tiếp từ start đến stop - 1.

Hãy biểu diễn các dãy sau đây bằng lệnh range().
a) 1,2,3,...,50.
b) 5, 6, 7, 8, 9, 10.
c) 0, 1.
d) 10.

THỰC HÀNH. Lệnh lặp for và lệnh range()

Nhiệm vụ 1.

Nhiệm vụ 1. Nhập số tự nhiên n từ bàn phím và in ra màn hình dãy các ước số của n theo chiều ngang màn hình. Ví dụ nếu n=10thi chương trình sẽ in ra dãy số 1, 2, 5, 10.

Hướng dẫn.

Hướng dẫn. Các ước số của n là các số tự nhiên k thoả mãn: n%k=0 Muốn in các số trên một hàng ngang cần dùng thêm tham số end = " " trong lệnh print().

Chương trình có thể như sau:
n = int(input("Nhập số tự nhiên n: "))
for k in range(1, n+1):
if n%k==0:
print(k, end = "")

Nhiệm vụ 2.

Nhiệm vụ 2. Nhập số tự nhiên n từ bàn phím và đếm số các ước số thực sự của n. Ước số thực sự của n là số tự nhiên k<n và là ước của n.

Hướng dẫn.

Hướng dẫn. Tương tự như chương trình ở nhiệm vụ 1, điểm khác là cần đếm số các ước số này và không tính n. Tạo một biến có tên count để đếm số các ước số thực sự của n.

n = int(input("Nhập số tự nhiên n: "))
count = 0
fork in range(1, n):
if n%k==0:
count = count + 1
print(count)

Luyện tập

1.

1. Đoạn chương trình sau in ra kết quả gì?
n = int(input("Nhập số tự nhiên n:"))
S=0
fork in range(n+1):
S=S+k
print(S*S)

2.

2. Viết đoạn chương trình tính tích 1×2×3×...×n với n được nhập vào từ bàn phím.

Vận dụng

1.

1. Viết chương trình nhập từ bàn phím số tự nhiên n và in ra kết quả S=1+12+...+1n

2.

2. Viết chương trình nhập từ bàn phím số tự nhiên n và in ra kết quả là tổng sau:
S=13+23+...+n3.

Xem bản PDF nguyên trang sách: Tin học 10 – Kết nối tri thức với cuộc sống (trang 105–107).