Tin học 10 – Bài 20
Câu lệnh lặp For

Mục tiêu bài học

  • Hiểu rõ ý nghĩa và cách hoạt động của vùng giá trị được tạo bởi lệnh range().
  • Nắm vững chức năng và cú pháp của lệnh lặp for trong ngôn ngữ lập trình Python.
  • Áp dụng vòng lặp for để giải quyết các bài toán lặp với số lần biết trước.

Hoạt động khởi động

Trong cuộc sống và lập trình, chúng ta thường xuyên gặp các công việc cần thực hiện lặp đi lặp lại. Ví dụ:

  • Để kể tên tất cả 30 bạn học sinh trong lớp, bạn cần lần lượt đọc tên từng bạn.
  • Để đếm các số chia hết cho 3 trong khoảng từ 1 đến 50, bạn phải kiểm tra lần lượt từng số (1, 2, 3,…) và ghi nhận lại.

Những thao tác lặp lại này có thể được mô tả ngắn gọn trong lập trình bằng một 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?

+ Ví dụ 1 (Kể tên học sinh): Công việc cần lặp là “đọc tên một bạn”. Nếu lớp có 30 học sinh, công việc này sẽ được lặp lại 30 lần.
+ Ví dụ 2 (Đếm số chia hết cho 3): Công việc cần lặp là “kiểm tra một số xem có chia hết cho 3 hay không”. Vì ta xét các số từ 1 đến 50, công việc này sẽ được lặp lại 50 lần.


1. Lệnh lặp FOR

Lệnh lặp for được sử dụng khi chúng ta muốn thực hiện một khối lệnh với số lần lặp đã biết trước. Lệnh này thường đi kèm với hàm range() để xác định vùng giá trị lặp.

Ví dụ: Tính tổng các số từ 0 đến 9.

S = 0
for k in range(10):
  S = S + k
print(S)
# Kết quả: 45
Trong đoạn code trên, tổng có giá trị bao nhiêu? Giải thích kết quả.

Tổng có giá trị là 45.
+ Lệnh range(10) tạo ra một dãy số từ 0 đến 9 (gồm 10 số).
+ Vòng lặp for sẽ lặp 10 lần. Ở mỗi lần lặp, biến k sẽ lần lượt nhận các giá trị: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
+ Biến S được cộng dồn với giá trị của k trong mỗi lần lặp.
+ Kết quả cuối cùng của S là tổng 0 + 1 + 2 + … + 9 = 45.


Cú pháp của lệnh lặp for với số lần biết trước trong Python như sau:

for <biến đếm> in range(n):
    <khối lệnh>
  • <biến đếm>: Là một biến dùng để duyệt qua các giá trị trong vùng lặp (ví dụ: k, i).
  • range(n): Tạo ra một dãy số nguyên từ 0 đến n-1.
  • <khối lệnh>: Các câu lệnh sẽ được thực thi trong mỗi vòng lặp. Các lệnh này phải được viết thụt vào so với dòng for.
Tin học 10 Bài 20 Lệnh For
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; for k in range(1,n+1): S = S + k

Giá trị của S trong đoạn chương trình chính là tổng 1 + 2 + … + n.
Lệnh range(1, n + 1) sẽ tạo ra một dãy các giá trị bao gồm 1, 2, 3, …, n.
Vòng lặp for sẽ duyệt qua từng giá trị này, gán cho biến k và cộng dồn vào biến S.
Do vậy, đoạn chương trình trên thực sự tính tổng các số từ 1 đến n.


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
  for k in range(1,n+1): 
  S = S + k

Giá trị của S trong đoạn chương trình trên chính là tổng 1 + 2 + ... + n.

  • Lệnh range(1, n + 1) sẽ tạo ra một dãy các giá trị bao gồm 1, 2, 3, ..., n.
  • Vòng lặp for sẽ duyệt qua từng giá trị này, gán cho biến k và cộng dồn vào biến S.
  • Do vậy, đoạn chương trình trên thực sự tính tổng các số từ 1 đến n.

2. Lệnh RANGE

Lệnh range() dùng để tạo ra một vùng giá trị (dãy số nguyên) tuần tự.

Các dạng thường dùng:

Cú phápÝ nghĩaVí dụDãy số tạo ra
range(stop)Tạo dãy số từ 0 đến stop - 1.range(5)0, 1, 2, 3, 4
range(start, stop)Tạo dãy số từ start đến stop - 1.range(3, 8)3, 4, 5, 6, 7

Lưu ý: Nếu giá trị start lớn hơn hoặc bằng stop (ví dụ: range(100, 1)), range() sẽ tạo ra một dãy rỗng.


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.

Dãy sốLệnh range() tương ứng
a) 1, 2, 3, …, 50range(1, 51)
b) 5, 6, 7, 8, 9, 10range(5, 11)
c) 0, 1range(2)
d) 10range(10, 11)

Thực hành

Nhiệm vụ 1:

In các ước số của một số tự nhiên n
Viết chương trình nhập vào số n và in ra màn hình các ước số của n trên cùng một hàng.

Hướng dẫn: Ước của n là số tự nhiên k mà n % k == 0. Ta dùng vòng lặp for để duyệt các số k từ 1 đến n và kiểm tra điều kiện này.

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:

Đếm số ước thực sự của n
Ước số thực sự của n là các ước số nhỏ hơn n. Viết chương trình nhập n và đếm số lượng ước thực sự của nó.

Hướng dẫn: Tương tự nhiệm vụ 1, nhưng ta chỉ duyệt k từ 1 đến n-1 (dùng range(1, n)) và dùng một biến đếm (count) để lưu kết quả.

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

Luyện tập

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
for k in range(n+1): 
  S = S + k
print(S*S)

Đoạn chương trình này in ra bình phương của tổng các số tự nhiên từ 0 đến n, tức là (0 + 1 + 2 + … + n)².

  • Vòng lặp for tính tổng S = 0 + 1 + 2 + ... + n.
  • Lệnh print(S*S) in ra giá trị S nhân với chính nó.

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.

n = int(input("Nhập số tự nhiên n: "))
P = 1 # Khởi tạo tích bằng 1
for k in range(1, n + 1):
  P = P * k
print("Giai thừa của", n, "là:", P)

Vận dụng

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 + 1/2 + … + 1/n.

n = int(input("Nhập số tự nhiên n: "))
S = 0.0 # Khởi tạo tổng là số thực để chứa kết quả thập phân
for i in range(1, n + 1):
  S = S + 1/i
print("Tổng S là:", S)

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 = 1³ + 2³ + … + n³.

n = int(input("Nhập số tự nhiên n: "))
S = 0
for i in range(1, n + 1):
  S = S + i*i*i # hoặc S = S + i**3
print("Tổng S là:", S)

Câu hỏi trắc nghiệm tin học 10 bài 20 - Câu lệnh lặp For

Thời gian làm bài: 30 phút
Đáp án hiển thị sau khi nộp bài
Câu hỏi sẽ được hiển thị ngẫu nhiên
Vui lòng nhập họ và tên để bắt đầu làm bài

NB

Chức năng chính của câu lệnh lặp for trong Python là gì?

NB

Trong cú pháp for k in range(10):, k được gọi là gì?

TH

Cho đoạn lệnh sau:
S = 0
for i in range(3):
 S = S + i

Sau khi thực hiện, giá trị của biến S là bao nhiêu?

TH

Cho đoạn chương trình sau:
T = 0
for k in range(5):
 T = T + k

Kết quả cuối cùng của biến T là bao nhiêu?

VD

Đoạn lệnh nào sau đây đếm chính xác số lượng các số chẵn nhỏ hơn 10 (không tính số 0)?

NB

Lệnh range(n) tạo ra một vùng giá trị gồm các số nguyên liên tiếp trong khoảng nào?

NB

Lệnh range(start, stop) tạo ra một vùng giá trị gồm các số nguyên liên tiếp trong khoảng nào?

TH

Vùng giá trị được tạo bởi lệnh range(3, 7) là dãy số nào sau đây?

TH

Lệnh range(10, 5) sẽ tạo ra kết quả gì?

TH

Để tạo ra dãy số 1, 2, 3, ..., 100, ta sử dụng lệnh range() nào sau đây?

TH

Cho n = 10. Đoạn chương trình sau sẽ in ra kết quả gì?
n = 10
for k in range(1, n + 1):
 if n % k == 0:
  print(k, end=" ")

VD

Đoạn chương trình nào sau đây tính đúng tích P = 1 × 2 × 3 × ... × n?

VD

Cho đoạn code:
n = int(input())
S = 0
for i in range(1, n + 1):
 S = S + 1/i

Đoạn code trên dùng để tính biểu thức nào sau đây?

VD

Để tính tổng S = 1³ + 2³ + ... + n³, dòng lệnh cần điền vào chỗ ba chấm (...) là gì?
n = int(input())
S = 0
for i in range(1, n + 1):
 ...

TH

Khi viết câu lệnh lặp for, lỗi cú pháp phổ biến nhất là gì?

TH

Chương trình sau sẽ in ra màn hình bao nhiêu dấu sao (*)?
for i in range(5):
 print('*')

Một học sinh viết chương trình để tính tổng các số tự nhiên lẻ nhỏ hơn hoặc bằng n, với n được nhập từ bàn phím.
n = int(input("Nhập n: "))
S = 0
for k in range(1, n + 1):
    if k % 2 != 0:
        S = S + k
print(S)

Dựa vào đoạn chương trình trên, hãy xác định các phát biểu sau là Đúng hay Sai.

NB Lệnh range(1, n + 1) sẽ duyệt qua các số từ 1 đến n.

TH Dòng lệnh if k % 2 != 0: dùng để kiểm tra xem k có phải là số chẵn không.

TH Nếu người dùng nhập n = 5, vòng lặp for sẽ thực hiện 6 lần.

VD Nếu người dùng nhập n = 6, kết quả in ra màn hình sẽ là 9.

Cho đoạn chương trình sau với mục đích tìm số lớn nhất trong một dãy số cho trước.
day_so = [2, 15, 7, 9, 12]
so_lon_nhat = 0
for so in day_so:
    if so > so_lon_nhat:
        so_lon_nhat = so
print(so_lon_nhat)

Hãy xác định tính đúng/sai của các phát biểu dưới đây.

NB Biến day_so là một biến kiểu danh sách (list).

TH Vòng lặp for sẽ lặp lại đúng 5 lần.

VD Chương trình sẽ hoạt động sai nếu trong day_so có chứa số âm.

TH Kết quả cuối cùng được in ra màn hình là 12.

Một chương trình được viết để đếm số lượng các ước số thực sự của một số tự nhiên n (ước thực sự là ước nhỏ hơn n).
n = int(input("Nhập n: "))
count = 0
for k in range(n):
    if n % k == 0:
        count = count + 1
print(count)

Xét các nhận định về đoạn chương trình trên.

NB Mục đích của biến count là để lưu trữ và cập nhật số lượng ước tìm thấy.

TH Lệnh range(n) sẽ khiến biến k nhận các giá trị từ 0 đến n-1.

VD Đoạn chương trình trên sẽ gây ra lỗi ZeroDivisionError khi thực thi.

VD Để chương trình chạy đúng, cần sửa range(n) thành range(1, n+1).

Bảng xếp hạng

Chưa có kết quả nào.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *