(Bài 5): Vòng lặp for while trong python

Nội dung chính

📘 1. Vì sao cần vòng lặp trong Python?

Khi viết chương trình, rất nhiều tình huống bạn cần lặp lại một thao tác nhiều lần:

  • In ra 100 dòng câu chúc

  • Tính tổng 1 → 100

  • Xử lý từng phần tử trong danh sách

  • Đọc từng dòng trong file

  • Lập trình game: cập nhật vị trí nhân vật theo từng frame

  • Lập trình AI: lặp hàng nghìn lần để huấn luyện mô hình

Nếu không có vòng lặp, bạn sẽ phải viết:

print(1)
print(2)
print(3)
...
print(100)

➡️ Quá chậm, quá ngu ngốc, quá “không Pythonic”.

Vòng lặp là công cụ giúp bạn:

  • Tự động hoá thao tác lặp lại

  • Viết ít code hơn

  • Chương trình nhanh hơn

  • Dễ bảo trì hơn

  • Tạo logic phức tạp từ cấu trúc đơn giản

Trong bài này, bạn sẽ học:

  • Vòng lặp for

  • Vòng lặp while

  • Từ khoá quan trọng: break, continue, pass

  • Cách dùng vòng lặp với list, range, dict, string, file

  • Lỗi thường gặp

  • 20 bài tập từ cơ bản đến nâng cao (kèm lời giải)


🟩 2. Vòng lặp FOR trong Python – đơn giản nhưng mạnh mẽ

Python dùng for theo phong cách duyệt từng phần tử trong một tập hợp (iterable).

✔️ Cú pháp

for biến in tập_hợp:
# khối lệnh

Ví dụ:

for i in [1, 2, 3]:
print(i)

✔ Kết quả:

1
2
3

✔️ Dùng range()

Hàm range() tạo ra một dãy số.

Cú pháp:

range(start, stop, step)

Ví dụ 1: In từ 0 → 4

for i in range(5):
print(i)

Ví dụ 2: In từ 1 → 10

for i in range(1, 11):
print(i)

Ví dụ 3: Step nhảy bước

for i in range(0, 10, 2):
print(i)

➡️ Kết quả: 0 2 4 6 8


🟦 2.1. For với danh sách (list)

colors = ["red", "green", "blue"]

for c in colors:
print(c)


🟦 2.2. For với chuỗi (string)

for ch in "Python":
print(ch)

🟦 2.3. For với dictionary

Duyệt key:

person = {"name": "Nam", "age": 25}

for k in person:
print(k)

Duyệt giá trị:

for v in person.values():
print(v)

Duyệt cả key và value:

for k, v in person.items():
print(k, v)

🟧 3. Vòng lặp WHILE – lặp cho đến khi điều kiện sai

✔️ Cú pháp:

while điều_kiện:
# thực thi

Ví dụ:

i = 1
while i <= 5:
print(i)
i += 1

🟦 3.1. While với điều kiện dừng

Ví dụ lặp cho đến khi người dùng nhập số đúng:

n = -1
while n < 0:
n = int(input("Nhập số dương: "))

🟦 3.2. Vòng lặp vô hạn

while True:
print("Nhấn Ctrl+C để dừng")

🟥 4. Các câu lệnh điều khiển vòng lặp

Python hỗ trợ 3 lệnh cực quan trọng:


✔️ break – thoát khỏi vòng lặp

for i in range(10):
if i == 5:
break
print(i)

Kết quả: 0 1 2 3 4


✔️ continue – bỏ qua vòng lặp hiện tại

for i in range(5):
if i == 2:
continue
print(i)

Kết quả: 0 1 3 4


✔️ pass – để trống, không làm gì

for i in range(5):
pass

🟪 5. Lồng nhiều vòng lặp (nested loop)

Ví dụ: In bảng cửu chương

for i in range(1, 10):
for j in range(1, 10):
print(i, "x", j, "=", i*j)
print()

🟩 6. Các lỗi thường gặp với vòng lặp

❌ Quên tăng biến điều kiện

i = 0
while i < 5:
print(i)

➡️ Vòng lặp vô tận.


❌ Nhầm break và return

break chỉ thoát vòng lặp
return thoát toàn bộ hàm.


❌ Dùng range sai stop (stop không được tính vào)

for i in range(1, 5):
print(i)

➡️ In → 1, 2, 3, 4 (không có 5)


🟦 7. 20 bài tập tự luyện + lời giải chi tiết


📝 Bài 1: In số từ 1 đến 100

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python"><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>):<br />
    <span class="hljs-built_in">print</span>(i)


📝 Bài 2: Tính tổng từ 1 đến N

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Nhập N: "</span>))<br />
s = <span class="hljs-number">0</span><br />
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, n+<span class="hljs-number">1</span>):<br />
    s += i<br />
<span class="hljs-built_in">print</span>(s)


📝 Bài 3: Đếm số chẵn trong danh sách

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">lst = [<span class="hljs-number">1</span>, <span class="hljs-number">4</span>, <span class="hljs-number">6</span>, <span class="hljs-number">7</span>, <span class="hljs-number">8</span>, <span class="hljs-number">11</span>]<br />
count = <span class="hljs-number">0</span></p>
<p><span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> lst:<br />
    <span class="hljs-keyword">if</span> x % <span class="hljs-number">2</span> == <span class="hljs-number">0</span>:<br />
        count += <span class="hljs-number">1</span></p>
<p><span class="hljs-built_in">print</span>(<span class="hljs-string">"Số chẵn:"</span>, count)


📝 Bài 4: Tìm số lớn nhất trong list

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">numbers = [<span class="hljs-number">5</span>, <span class="hljs-number">2</span>, <span class="hljs-number">9</span>, <span class="hljs-number">1</span>, <span class="hljs-number">7</span>]<br />
max_val = numbers[<span class="hljs-number">0</span>]</p>
<p><span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> numbers:<br />
    <span class="hljs-keyword">if</span> x > max_val:<br />
        max_val = x</p>
<p><span class="hljs-built_in">print</span>(<span class="hljs-string">"Max:"</span>, max_val)


📝 Bài 5: Tính giai thừa n!

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"n = "</span>))<br />
gt = <span class="hljs-number">1</span></p>
<p><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, n+<span class="hljs-number">1</span>):<br />
    gt *= i</p>
<p><span class="hljs-built_in">print</span>(<span class="hljs-string">"n! ="</span>, gt)


📝 Bài 6: In bảng cửu chương N

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Nhập số: "</span>))</p>
<p><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">11</span>):<br />
    <span class="hljs-built_in">print</span>(n, <span class="hljs-string">"x"</span>, i, <span class="hljs-string">"="</span>, n*i)


📝 Bài 7: In tam giác sao

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span class="hljs-bullet">*</span><br />
**<br />
<span class="hljs-strong">***<br />
**</span>**<br />
</code></div>
</div>
<div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary">
<div class="sticky top-9">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python"><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">5</span>):<br />
    <span class="hljs-built_in">print</span>(<span class="hljs-string">"*"</span> * i)


📝 Bài 8: Tính tổng các số lẻ từ 1 đến 100

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">s = <span class="hljs-number">0</span><br />
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>, <span class="hljs-number">2</span>):<br />
    s += i<br />
<span class="hljs-built_in">print</span>(s)


📝 Bài 9: Đếm xem chuỗi có bao nhiêu chữ ‘a’

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">s = <span class="hljs-string">"anaconda"</span><br />
count = <span class="hljs-number">0</span></p>
<p><span class="hljs-keyword">for</span> ch <span class="hljs-keyword">in</span> s:<br />
    <span class="hljs-keyword">if</span> ch == <span class="hljs-string">'a'</span>:<br />
        count += <span class="hljs-number">1</span></p>
<p><span class="hljs-built_in">print</span>(count)


📝 Bài 10: While – nhập số cho đến khi nhập đúng

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = -<span class="hljs-number">1</span><br />
<span class="hljs-keyword">while</span> n < <span class="hljs-number">0</span>:<br />
    n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Nhập số >= 0: "</span>))


📝 Bài 11: Kiểm tra số nguyên tố

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Nhập n: "</span>))<br />
is_prime = <span class="hljs-literal">True</span></p>
<p><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">2</span>, <span class="hljs-built_in">int</span>(n**<span class="hljs-number">0.5</span>) + <span class="hljs-number">1</span>):<br />
    <span class="hljs-keyword">if</span> n % i == <span class="hljs-number">0</span>:<br />
        is_prime = <span class="hljs-literal">False</span><br />
        <span class="hljs-keyword">break</span></p>
<p><span class="hljs-built_in">print</span>(<span class="hljs-string">"Nguyên tố"</span> <span class="hljs-keyword">if</span> is_prime <span class="hljs-keyword">else</span> <span class="hljs-string">"Không phải nguyên tố"</span>)


📝 Bài 12: FizzBuzz

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python"><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, <span class="hljs-number">101</span>):<br />
    <span class="hljs-keyword">if</span> i % <span class="hljs-number">15</span> == <span class="hljs-number">0</span>:<br />
        <span class="hljs-built_in">print</span>(<span class="hljs-string">"FizzBuzz"</span>)<br />
    <span class="hljs-keyword">elif</span> i % <span class="hljs-number">3</span> == <span class="hljs-number">0</span>:<br />
        <span class="hljs-built_in">print</span>(<span class="hljs-string">"Fizz"</span>)<br />
    <span class="hljs-keyword">elif</span> i % <span class="hljs-number">5</span> == <span class="hljs-number">0</span>:<br />
        <span class="hljs-built_in">print</span>(<span class="hljs-string">"Buzz"</span>)<br />
    <span class="hljs-keyword">else</span>:<br />
        <span class="hljs-built_in">print</span>(i)


📝 Bài 13: Tính tổng chữ số của số nguyên

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Nhập n: "</span>))<br />
s = <span class="hljs-number">0</span></p>
<p><span class="hljs-keyword">while</span> n > <span class="hljs-number">0</span>:<br />
    s += n % <span class="hljs-number">10</span><br />
    n //= <span class="hljs-number">10</span></p>
<p><span class="hljs-built_in">print</span>(s)


📝 Bài 14: Đảo ngược chuỗi

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">s = <span class="hljs-string">"Python"</span><br />
rev = <span class="hljs-string">""</span></p>
<p><span class="hljs-keyword">for</span> ch <span class="hljs-keyword">in</span> s:<br />
    rev = ch + rev</p>
<p><span class="hljs-built_in">print</span>(rev)


📝 Bài 15: Tìm số xuất hiện nhiều nhất trong danh sách

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">lst = [<span class="hljs-number">1</span>,<span class="hljs-number">2</span>,<span class="hljs-number">2</span>,<span class="hljs-number">3</span>,<span class="hljs-number">3</span>,<span class="hljs-number">3</span>,<span class="hljs-number">4</span>]<br />
max_count = <span class="hljs-number">0</span><br />
result = <span class="hljs-literal">None</span></p>
<p><span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> lst:<br />
    count = lst.count(x)<br />
    <span class="hljs-keyword">if</span> count > max_count:<br />
        max_count = count<br />
        result = x</p>
<p><span class="hljs-built_in">print</span>(result)


📝 Bài 16: Tính tổng bình phương từ 1 đến N

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">n = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Nhập n: "</span>))<br />
s = <span class="hljs-number">0</span></p>
<p><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">1</span>, n+<span class="hljs-number">1</span>):<br />
    s += i * i</p>
<p><span class="hljs-built_in">print</span>(s)


📝 Bài 17: In số Fibonacci

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">a, b = <span class="hljs-number">0</span>, <span class="hljs-number">1</span><br />
<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-number">10</span>):<br />
    <span class="hljs-built_in">print</span>(a)<br />
    a, b = b, a + b


📝 Bài 18: Tính số lượng ký tự in hoa trong chuỗi

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">s = <span class="hljs-string">"PyThOn"</span><br />
count = <span class="hljs-number">0</span></p>
<p><span class="hljs-keyword">for</span> ch <span class="hljs-keyword">in</span> s:<br />
    <span class="hljs-keyword">if</span> ch.isupper():<br />
        count += <span class="hljs-number">1</span></p>
<p><span class="hljs-built_in">print</span>(count)


📝 Bài 19: While – đoán số bí mật

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">secret = <span class="hljs-number">7</span><br />
guess = -<span class="hljs-number">1</span></p>
<p><span class="hljs-keyword">while</span> guess != secret:<br />
    guess = <span class="hljs-built_in">int</span>(<span class="hljs-built_in">input</span>(<span class="hljs-string">"Đoán số: "</span>))</p>
<p><span class="hljs-built_in">print</span>(<span class="hljs-string">"Chính xác!"</span>)


📝 Bài 20: Vẽ hình chữ nhật bằng dấu * (nested loop)

</div>
</div>
</div>
<div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-python">w = <span class="hljs-number">5</span><br />
h = <span class="hljs-number">3</span></p>
<p><span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(h):<br />
    <span class="hljs-keyword">for</span> j <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(w):<br />
        <span class="hljs-built_in">print</span>(<span class="hljs-string">"*"</span>, end=<span class="hljs-string">""</span>)<br />
    <span class="hljs-built_in">print</span>()


🟦 8. Vòng lặp giúp bạn “lập trình thực sự”

Ở những bài trước, bạn mới chỉ làm quen Python ở mức độ “đơn lẻ”.
Nhưng từ bài 5 – vòng lặp, bạn đã bắt đầu lập trình giống người thật:

  • Xử lý dữ liệu

  • Tự động hoá thao tác

  • Tạo chương trình có luồng logic

  • Biết kiểm soát điều kiện và dòng chảy

Từ đây, bạn đã đủ nền tảng để học sang:

👉 Bài 6: Hàm (Function) trong Python – viết code chuyên nghiệp đúng chuẩn

Be the first to comment

Leave a Reply

Your email address will not be published.


*