Python bài 06: Vòng lặp for, while, range và điều khiển lặp
- 18-10-2026
- Toanngo92
- 0 Comments
Giáo trình Python miễn phí · Chương 3/12: Điều kiện và vòng lặp · Bài 06/24.
Mục lục
Mục tiêu bài học
Duyệt dữ liệu và lặp theo điều kiện, biết dừng đúng lúc và tránh vòng lặp vô hạn.
for khi duyệt, while khi chờ điều kiện
for duyệt từng phần tử của iterable. Với số lần đã biết, range(start, stop, step) tạo dãy số không bao gồm stop. while kiểm tra điều kiện trước mỗi vòng, phù hợp khi số lần lặp phụ thuộc trạng thái.
Trước khi viết vòng lặp, xác định trạng thái ban đầu, việc thực hiện mỗi vòng và điều kiện dừng. Với while, phải có bước làm thay đổi trạng thái để tiến gần điều kiện dừng. Không tăng bộ đếm đúng chỗ là nguyên nhân phổ biến của vòng lặp vô hạn.
tong = 0
for so in range(1, 6):
tong += so
print("Tổng:", tong)
con_lai = 3
while con_lai > 0:
print("Còn", con_lai)
con_lai -= 1
Kết quả:
Tổng: 15 Còn 3 Còn 2 Còn 1
break, continue, pass và else
break thoát vòng lặp gần nhất. continue bỏ phần còn lại của vòng hiện tại rồi chuyển sang lần tiếp theo. pass không làm gì; nó chỉ giữ cho một khối lệnh chưa triển khai có cú pháp hợp lệ.
else của vòng lặp chạy khi vòng kết thúc bình thường mà không gặp break. Nó không phải else của if nằm bên trong. Một ứng dụng là tìm kiếm: gặp phần tử cần tìm thì break, nếu duyệt hết không gặp thì else thông báo không tìm thấy.
for diem in [4, 6, 9, 7]:
if diem < 5:
continue
if diem >= 8:
print("Tìm thấy điểm giỏi:", diem)
break
else:
print("Không có điểm giỏi")
for vi_tri, ten in enumerate(["An", "Bình"], start=1):
print(vi_tri, ten)
for ten, diem in zip(["An", "Bình"], [8, 9]):
print(ten, diem)
Kết quả:
Tìm thấy điểm giỏi: 9 1 An 2 Bình An 8 Bình 9
Duyệt có vị trí và ghép dãy
enumerate() giúp có cả vị trí và phần tử, không cần tự tăng biến chỉ số. zip() ghép các phần tử tương ứng của nhiều iterable và mặc định dừng khi dãy ngắn nhất hết. Nếu bắt buộc các dãy có cùng số phần tử, dùng zip(…, strict=True) để phát hiện lệch dữ liệu.
Ví dụ dùng danh sách viết trong dấu [] để có dữ liệu lặp. Các bài tiếp theo sẽ giải thích cấu trúc này kỹ hơn. Khi cần xóa phần tử trong lúc duyệt, thường nên tạo danh sách kết quả mới thay vì sửa trực tiếp danh sách đang lặp.
Lỗi thường gặp và lưu ý
- range(5) tạo các số 0 đến 4, không phải 1 đến 5.
- break chỉ thoát vòng lặp trong cùng; không tự thoát mọi vòng lặp lồng nhau.
Ghi nhớ
Chọn for để duyệt và while để lặp theo trạng thái. Dùng enumerate/zip cho ý định rõ ràng và thử cả dữ liệu rỗng để kiểm tra chương trình.

