Bài 11. Vòng lặp trong Python

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é!

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

Dark mode