Vòng lặp giúp máy tính làm việc lặp đi lặp lại thay bạn. Bài này dạy for, while, range, break, continue.
Bạn sẽ học được
- Dùng for với range và với danh sách
- Dùng while khi chưa biết số lần lặp
- Điều khiển vòng lặp bằng break, continue
- Tính tổng, đếm, tìm kiếm bằng vòng lặp
Thuật ngữ cần biết
- Vòng lặp
- Khối lệnh chạy lại nhiều lần.
- Biến đếm
- Biến thay đổi qua mỗi vòng, ví dụ
i. - Lặp vô hạn
- Vòng lặp không bao giờ dừng vì điều kiện luôn đúng; thường là lỗi.
- Bộ tích lũy
- Biến cộng dồn kết quả, ví dụ
tong.
Vòng lặp for và range
for i in range(5): # 0,1,2,3,4
print("Lần", i)
for i in range(1, 11, 2): # 1,3,5,7,9
print(i)
for ten in ["An", "Bình", "Chi"]:
print("Chào", ten)range(a, b, bước) tạo dãy từ a đến b-1.
Vòng lặp while
so = 0
while so <= 0:
so = int(input("Nhập số dương: "))
print("Bạn đã nhập", so)while lặp khi điều kiện còn đúng. Dùng khi chưa biết trước số lần, ví dụ hỏi lại đến khi người dùng nhập hợp lệ.
break và continue
for n in range(1, 100):
if n % 7 == 0:
print("Số chia hết cho 7 đầu tiên:", n)
break # thoát hẳn vòng lặp
for n in range(1, 11):
if n % 2 == 0:
continue # bỏ qua lượt này
print(n)Mẫu thường gặp
# Tính tổng 1..100
tong = 0
for i in range(1, 101):
tong += i
print(tong) # 5050
# Bảng cửu chương
for i in range(1, 11):
print(f"7 x {i} = {7*i}")Tình huống: Đoán số
Máy nghĩ một số từ 1 đến 100, bạn đoán đến khi đúng; máy gợi ý "cao hơn" hoặc "thấp hơn".
import random
bi_mat = random.randint(1, 100)
lan = 0
while True:
lan += 1
doan = int(input("Đoán: "))
if doan < bi_mat:
print("Cao hơn")
elif doan > bi_mat:
print("Thấp hơn")
else:
print(f"Đúng sau {lan} lần!")
breakMẹo hay
Muốn có cả chỉ số lẫn giá trị khi lặp danh sách, dùng for i, x in enumerate(ds):.
Lưu ý
Quên cập nhật biến điều kiện trong while sẽ gây lặp vô hạn. Dừng chương trình bằng Ctrl+C.
Thực hành
- In các số chia hết cho 3 từ 1 đến 50.
- Tính giai thừa của n.
- Đếm số chữ số của một số nguyên dương.
- In tam giác sao 5 dòng.
Tóm tắt bài học
forkhi biết số lần hoặc duyệt dãy;whilekhi lặp theo điều kiện.range(a, b, bước)sinh dãy số.breakthoát,continuebỏ qua lượt hiện tại.- Cẩn thận vòng lặp vô hạn.