Bài 4. Vòng lặp

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.

35 phútCơ bản
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!")
        break
Mẹ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
  1. In các số chia hết cho 3 từ 1 đến 50.
  2. Tính giai thừa của n.
  3. Đếm số chữ số của một số nguyên dương.
  4. In tam giác sao 5 dòng.
Tóm tắt bài học
  • for khi biết số lần hoặc duyệt dãy; while khi lặp theo điều kiện.
  • range(a, b, bước) sinh dãy số.
  • break thoát, continue bỏ qua lượt hiện tại.
  • Cẩn thận vòng lặp vô hạn.