Bài 11: Vòng lặp trong Python
Phần trước, chúng ta đã được tìm hiểu về câu lệnh rẽ nhánh trong python rồi và các bạn cũng thấy nó khá đơn giản đúng không? Phần này chúng ta cũng sẽ tìm hiểu về một thứ không thể thiếu trong các ngôn ngữ lập trình đó là vòng lặp.
1. Vòng lặp là gì?
Vòng lặp (tiếng anh là loop) là một thuật ngữ dùng để diễn tả một hành động hay một cụm hành động được lặp đi lặp lại nhiều lần.
VD: Như chúng ta cứ uống nước xong là lại phải đi tiểu và hành động đó cứ xảy ra đến khi bạn die mới dừng. Thì đó cũng có thể coi là một vòng lặp.
Và trong Python thì nó cung cấp cho chúng ta 2 dạng vòng lặp chính đó là:
- for
- while
2. Vòng lặp for trong Python.
2.1. Vòng lặp for là gì?
Vòng lặp for dùng để lặp lại một nhóm câu lệnh nhiều lần, khi ta biết trước số lần lặp hoặc muốn duyệt qua từng phần tử trong một danh sách, chuỗi, dãy số,…
👉 Ví dụ đời sống:
“Nói Xin chào cho 5 bạn” → ta dùng vòng lặp để khỏi phải viết 5 lần.
2.2. Cú pháp lệnh for trong Python
for biến in dãy_giá_trị:
câu_lệnh_1
câu_lệnh_2
Giải thích:
- for : từ khóa bắt đầu vòng lặp
- biến : đại diện cho mỗi giá trị trong dãy
- in : có nghĩa là “trong”
- dãy_giá_trị : danh sách, chuỗi, hoặc dãy số
- Các câu lệnh phải thụt vào (indent)
⚠️ Python bắt buộc thụt đầu dòng, nếu không sẽ lỗi!
2.3. Dùng for với range()
Hàm range(n) tạo ra các số từ 0 đến n−1
range(5) → 0, 1, 2, 3, 4
2.4. Ví dụ
🔹 Ví dụ 1: In ra số từ 1 đến 5
for i in range(1, 6):
print(i)
📌 Kết quả:
1
2
3
4
5
👉 i lần lượt nhận các giá trị từ 1 đến 5
🔹 Ví dụ 2: In câu “Xin chào” 3 lần
for i in range(3):
print(“Xin chào”)
📌 Kết quả:
Xin chào
Xin chào
Xin chào
🔹 Ví dụ 3: Tính tổng các số từ 1 đến 10
tong = 0
for i in range(1, 11):
tong = tong + i
print(tong)
📌 Kết quả:
55
👉 Mỗi lần lặp, tong được cộng thêm i
🔹 Ví dụ 4: Duyệt từng chữ trong một chuỗi
for ch in “Python”:
print(ch)
📌 Kết quả:
P
y
t
h
o
n
👉 Vòng lặp lấy từng ký tự trong từ “Python”
🔹 Ví dụ 5: In các phần tử trong danh sách
mon_hoc = [“Toán”, “Văn”, “Tin”]
for mon in mon_hoc:
print(mon)
📌 Kết quả:
Toán
Văn
Tin
👉 mon lần lượt là từng môn học trong danh sách
2.5. Ghi nhớ quan trọng cho học sinh THCS ⭐
✔ for dùng khi biết trước số lần lặp
✔ Luôn thụt đầu dòng các câu lệnh trong vòng lặp
✔ range() rất hay dùng với for
✔ Tên biến (i, j, mon, …) đặt sao cho dễ hiểu
Và đương nhiên là các vòng for này cũng có thể lồng nhau.
VD: Vòng for lồng nhau.
name = “thanhtaivtt”
for i in range(0,10):
for j in range(i,10):
print(j, end = ” “)
print (“”)
# Ket qua:
# 0 1 2 3 4 5 6 7 8 9
# 1 2 3 4 5 6 7 8 9
# 2 3 4 5 6 7 8 9
# 3 4 5 6 7 8 9
# 4 5 6 7 8 9
# 5 6 7 8 9
# 6 7 8 9
# 7 8 9
# 8 9
# 9
Chú thích: ở đây mình có sử dụng hàm range(a,z) để tạo ra các con số từ a -> z
2.4. Bài tập thực hành
Bài 1
Viết chương trình in ra các số từ 1 đến 10.
Bài 2
In ra câu “Em yêu Python” 5 lần.
Bài 3
In ra các số chẵn từ 2 đến 20.
Bài 4
Tính tổng các số từ 1 đến n
👉 Với n nhập từ bàn phím.
Bài 5
Nhập một số n, in ra bảng cửu chương của n.
Ví dụ:
Nếu n = 3
3 x 1 = 3
3 x 2 = 6
…
3 x 10 = 30
Bài 6
Nhập một chuỗi, in ra mỗi ký tự của chuỗi trên một dòng.
Bài 7
Đếm xem trong các số từ 1 đến 100 có bao nhiêu số chia hết cho 3.
Bài 8
Tính tích các số từ 1 đến n (n!).
Bài 9
Cho danh sách:
diem = [7, 8, 9, 5, 6]
In ra:
- Các điểm ≥ 7
- Tính điểm trung bình
Bài 10
In hình tam giác sao:
*
**
***
****
*****
Bài 11
In hình tam giác số:
1
12
123
1234
12345
2.4. Đáp án
🟢 BÀI 1
In ra các số từ 1 đến 10
for i in range(1, 11):
print(i)
👉 range(1, 11) tạo các số từ 1 đến 10
🟢 BÀI 2
In câu “Em yêu Python” 5 lần
for i in range(5):
print(“Em yêu Python”)
👉 Lặp 5 lần, mỗi lần in một câu
🟢 BÀI 3
In các số chẵn từ 2 đến 20
for i in range(2, 21, 2):
print(i)
👉 Mỗi lần tăng thêm 2 → chỉ ra số chẵn
🟡 BÀI 4
Tính tổng các số từ 1 đến n
n = int(input(“Nhập n: “))
tong = 0
for i in range(1, n + 1):
tong = tong + i
print(“Tổng =”, tong)
👉 Biến tong dùng để cộng dồn
🟡 BÀI 5
In bảng cửu chương của n
n = int(input(“Nhập n: “))
for i in range(1, 11):
print(n, “x”, i, “=”, n * i)
👉 i chạy từ 1 đến 10
🟡 BÀI 6
In mỗi ký tự của chuỗi
chuoi = input(“Nhập chuỗi: “)
for ch in chuoi:
print(ch)
👉 Vòng lặp duyệt từng ký tự trong chuỗi
🟠 BÀI 7
Đếm số chia hết cho 3 từ 1 đến 100
dem = 0
for i in range(1, 101):
if i % 3 == 0:
dem = dem + 1
print(“Có”, dem, “số chia hết cho 3”)
👉 % là phép chia lấy dư
🟠 BÀI 8
Tính n! (giai thừa của n)
n = int(input(“Nhập n: “))
tich = 1
for i in range(1, n + 1):
tich = tich * i
print(n, “! =”, tich)
👉 Giai thừa: 1 × 2 × 3 × … × n
🟠 BÀI 9
Xử lý danh sách điểm
diem = [7, 8, 9, 5, 6]
tong = 0
dem = 0
for d in diem:
if d >= 7:
print(d)
tong = tong + d
dem = dem + 1
diem_tb = tong / dem
print(“Điểm trung bình =”, diem_tb)
👉 Duyệt từng phần tử trong danh sách
🔵 BÀI 10
In tam giác sao
for i in range(1, 6):
print(“*” * i)
👉 “*” * i giúp in nhiều dấu * trên một dòng
🔵 BÀI 11
In tam giác số
for i in range(1, 6):
for j in range(1, i + 1):
print(j, end=””)
print()
👉
- Vòng for ngoài: số dòng
- Vòng for trong: số in trên mỗi dòng
- end=”” để không xuống dòng
⭐ Tổng kết cho học sinh
✔ Vòng lặp for rất mạnh khi lặp theo số lần xác định
✔ range() là người bạn thân của for
✔ Biết dùng biến đếm, tổng, tích
3. Vòng lặp while.
3.1.Vòng lặp while là gì?
Vòng lặp while dùng để lặp lại một đoạn chương trình khi điều kiện còn đúng (True).
👉 Hiểu đơn giản:
“Còn đúng thì còn lặp”
3.2. Cú pháp vòng lặp while trong Python
while điều_kiện:
câu_lệnh_1
câu_lệnh_2
Giải thích:
- while : từ khóa bắt đầu vòng lặp
- điều_kiện : biểu thức đúng (True) hoặc sai (False)
- Khi điều_kiện đúng → chương trình tiếp tục lặp
- Khi điều_kiện sai → thoát vòng lặp
- Các câu lệnh phải thụt đầu dòng
⚠️ Nếu điều kiện luôn đúng, chương trình sẽ lặp vô hạn!
3.3. Ví dụ
VD: Mình sẽ viết một vòng lặp while in ra dãy số từ 1 đến 10.
i = 1;
while(i <= 10):
print(i)
i += 1
Đối với vòng lặp while này thì chúng ta cũng có thể lồng nó lại với nhau được.
VD: Lồng 2 vòng lặp while.
i = 1
while(i <= 10):
j = 1
while (j <= 10 – i):
print(j, end = ” “)
j += 1
print(“”)
i += 1
# ket qua:
# 1 2 3 4 5 6 7 8 9
# 1 2 3 4 5 6 7 8
# 1 2 3 4 5 6 7
# 1 2 3 4 5 6
# 1 2 3 4 5
# 1 2 3 4
# 1 2 3
# 1 2
# 1
🔹 Ví dụ 1: In số từ 1 đến 5
i = 1
while i <= 5:
print(i)
i = i + 1
👉 i tăng lên sau mỗi vòng lặp
👉 Khi i = 6 → điều kiện sai → dừng
3.4. So sánh nhanh for và while
| for | while |
|---|---|
| Biết trước số lần lặp | Chưa biết trước số lần lặp |
| Dùng range() | Dùng điều kiện |
| Dễ dùng, ngắn gọn | Linh hoạt hơn |
3.5. Một số ví dụ
🔹 Ví dụ 2: In “Hello” 3 lần
dem = 1
while dem <= 3:
print(“Hello”)
dem = dem + 1
🔹 Ví dụ 3: Tính tổng từ 1 đến 10
i = 1
tong = 0
while i <= 10:
tong = tong + i
i = i + 1
print(tong)
🔹 Ví dụ 4: Nhập mật khẩu đúng mới dừng
mat_khau = “1234”
nhap = “”
while nhap != mat_khau:
nhap = input(“Nhập mật khẩu: “)
print(“Đăng nhập thành công”)
👉 Chưa đúng → nhập lại
🔹 Ví dụ 5: Đếm ngược
i = 5
while i > 0:
print(i)
i = i – 1
3.6. Lỗi học sinh hay gặp ⚠️
❌ Quên tăng/giảm biến → vòng lặp vô hạn
❌ Không thụt đầu dòng
❌ Điều kiện sai ngay từ đầu → không chạy lần nào
3.7. Ghi nhớ cho học sinh ⭐
✔ while = lặp khi còn đúng
✔ Phải có biến thay đổi điều kiện
✔ Luôn kiểm tra điều kiện dừng
3.8. Bài tập thực hành
Bài 1
In ra các số từ 1 đến 10 bằng vòng lặp while.
Bài 2
In ra câu “Em học Python” 5 lần bằng while.
Bài 3
In ra các số chẵn từ 2 đến 20.
Bài 4
Tính tổng các số từ 1 đến n (n nhập từ bàn phím).
Bài 5
Nhập một số n, in ra bảng cửu chương của n bằng while.
Bài 6
Nhập một số n, in ra các chữ số của n (mỗi chữ số trên một dòng).
Bài 7
Đếm xem từ 1 đến 100 có bao nhiêu số chia hết cho 5.
Bài 8
Tính n! (giai thừa của n) bằng while.
Bài 9
Nhập các số cho đến khi nhập 0 thì dừng, sau đó in ra:
- Tổng các số đã nhập
- Số lượng các số đã nhập
Bài 10
In hình tam giác sao:
*
**
***
****
*****
(bằng while)
Bài 11
Nhập mật khẩu, nếu sai thì nhập lại cho đến khi đúng.
3.9. Chữa bài tập
🟢 BÀI 1
In các số từ 1 đến 10
i = 1
while i <= 10:
print(i)
i = i + 1
👉 i tăng dần, khi i = 11 thì dừng
🟢 BÀI 2
In “Em học Python” 5 lần
dem = 1
while dem <= 5:
print(“Em học Python”)
dem = dem + 1
👉 Biến dem đếm số lần lặp
🟢 BÀI 3
In các số chẵn từ 2 đến 20
i = 2
while i <= 20:
print(i)
i = i + 2
👉 Mỗi lần tăng 2 → luôn là số chẵn
🟡 BÀI 4
Tính tổng các số từ 1 đến n
n = int(input(“Nhập n: “))
i = 1
tong = 0
while i <= n:
tong = tong + i
i = i + 1
print(“Tổng =”, tong)
👉 tong dùng để cộng dồn
🟡 BÀI 5
In bảng cửu chương của n
n = int(input(“Nhập n: “))
i = 1
while i <= 10:
print(n, “x”, i, “=”, n * i)
i = i + 1
👉 Lặp từ 1 đến 10
🟡 BÀI 6
In các chữ số của n (mỗi chữ số một dòng)
n = int(input(“Nhập n: “))
while n > 0:
print(n % 10)
n = n // 10
👉 % 10 lấy chữ số cuối
👉 // 10 bỏ chữ số cuối
🟠 BÀI 7
Đếm số chia hết cho 5 từ 1 đến 100
i = 1
dem = 0
while i <= 100:
if i % 5 == 0:
dem = dem + 1
i = i + 1
print(“Có”, dem, “số chia hết cho 5”)
🟠 BÀI 8
Tính n! (giai thừa)
n = int(input(“Nhập n: “))
i = 1
tich = 1
while i <= n:
tich = tich * i
i = i + 1
print(n, “! =”, tich)
👉 Giai thừa: 1 × 2 × … × n
🟠 BÀI 9
Nhập số cho đến khi nhập 0 thì dừng
tong = 0
dem = 0
n = int(input(“Nhập số: “))
while n != 0:
tong = tong + n
dem = dem + 1
n = int(input(“Nhập số: “))
print(“Tổng =”, tong)
print(“Số lượng =”, dem)
👉 Nhập 0 → thoát vòng lặp
🔵 BÀI 10
In tam giác sao
i = 1
while i <= 5:
print(“*” * i)
i = i + 1
🔵 BÀI 11
Nhập mật khẩu cho đến khi đúng
mat_khau = “1234”
nhap = “”
while nhap != mat_khau:
nhap = input(“Nhập mật khẩu: “)
print(“Đăng nhập thành công”)
👉 Sai → nhập lại
👉 Đúng → thoát vòng lặp
⭐ Tổng kết cho học sinh THCS
✔ while dùng khi chưa biết trước số lần lặp
✔ Luôn có biến thay đổi điều kiện
✔ Cẩn thận vòng lặp vô hạn
4. Các từ khóa tác động đến vòng lặp.
Thông thường trong một số trường hợp vòng lặp của chúng ta sẽ có thể không cần thực thi code trong một số vòng lặp cụ thể hay là cần nhảy lần vòng lặp đó và thực thi các lần lặp tiếp theo, và để làm được điều đó thì trong Python có hỗ trợ chúng ta 2 keyword để tác động đến vòng lặp là:
- break – break giúp chúng ta chấm dứt vòng lặp tại thời điểm nó xuất hiện và các code cùng cấp phía sau nó sẽ không được thực thi nữa.
- continue – giúp chúng ta nhảy qua lần lặp hiện tại và chuyển đến lần lặp tiếp theo, các code cùng cấp phía sau nó cũng sẽ không được thực hiện.
VD: Lệnh break.
i = 1
while(i <= 10):
print(i)
if i == 5 :
break
i += 1
# ket qua:
# 1
# 2
# 3
# 4
# 5
VD: Lệnh continue.
for i in “thanhtaivtt”:
if i == “n”:
continue
print(i, end=” “)
# ket qua:
# t h a h t a i v t t
5. Lời kết.
Vòng lặp là một phần rất quan trong và sẽ phải sử dụng thường xuyên đến nó trong các bài tiếp theo nên các bạn chú ý ôn thật kỹ nhé!
