Bài 20: Câu lệnh lặp for

1. LỆNH for

Lệnh lặp for thường được dùng khi chúng ta biết trước số lần cần thực hiện một công việc nào đó (giống như việc thầy giáo gọi tên lần lượt từng bạn trong danh sách lớp để điểm danh vậy).

Cú pháp “quyền lực”:

for <biến> in range(n):
  <khối lệnh lặp>

Lưu ý: Vẫn là quy tắc cũ nhưng không bao giờ thừa: Sau lệnh for phải có dấu hai chấm (:) và các lệnh bên trong phải viết thụt vào (thường là 1 Tab hoặc 4 dấu cách). Nếu không, Python sẽ lại “hờn dỗi” và báo lỗi ngay.

2. LỆNH range()

Để lệnh for biết đường mà chạy, nó cần một vùng các giá trị được tạo ra bởi lệnh range().

a) Dạng “Tiết kiệm” (Chỉ có một tham số): range(n)

• Nó sẽ tạo ra một dãy số bắt đầu từ 0 và kết thúc ở n – 1.

Ví dụ: range(5) sẽ “đẻ” ra các số: 0, 1, 2, 3, 4.

Lưu ý: Nó rất “ngang”, không bao giờ chịu chạm đến con số n đâu nhé!

b) Dạng “Chi tiết” (Có hai tham số): range(start, stop)

• Nó sẽ tạo dãy số bắt đầu từ start và kết thúc ở stop – 1.

Ví dụ: range(1, 6) sẽ cho ta các số: 1, 2, 3, 4, 5.

Cú lừa pháp thuật: Nếu bạn lỡ tay viết range(10, 2) (tức là start >= stop), Python sẽ trả về một vùng rỗng, và vòng lặp của bạn sẽ chẳng thèm chạy lần nào cả!

3. CƠ CHẾ HOẠT ĐỘNG

Khi lệnh for thực hiện:

1. Biến chạy (ví dụ là i) sẽ “nhảy” vào lấy giá trị đầu tiên trong vùng range().

2. Thực hiện khối lệnh bên dưới.

3. Sau khi xong việc, biến i lại tự động nhảy sang giá trị tiếp theo trong dãy và lặp lại cho đến khi hết sạch các số trong vùng range() thì thôi.

VÍ DỤ VẬN DỤNG

Hãy thử tính tổng các số từ 1 đến n (với n được nhập từ bàn phím):

n = int(input("Nhập n: "))
S = 0
for i in range(1, n + 1): # Phải dùng n + 1 để lấy được giá trị n nhé!
    S = S + i
print("Tổng các số là:", S)

💡 Lời khuyên từ các tiền bối: Sử dụng for giống như việc bạn lên lịch trình cho một chiếc xe buýt chạy qua từng trạm dừng trong range(). Tại mỗi trạm, xe sẽ thực hiện một nhiệm vụ (khối lệnh). Khi đi hết các trạm, xe về bến và kết thúc hành trình. Đừng quên dấu hai chấmthụt lề, đó chính là “xăng” để xe có thể chạy đấy!

Views: 0

Để 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 *