4 bài tập Python lớp 9 về vòng lặp for và while có lời giải
4 bài tập Python lớp 9 về vòng lặp for và while có lời giải
Vòng lặp giúp chương trình thực hiện một việc nhiều lần mà không cần viết lại cùng một dòng lệnh. Python có hai kiểu vòng lặp quen thuộc: for phù hợp khi biết trước số lần lặp, còn while phù hợp khi muốn lặp chừng nào điều kiện còn đúng. Đây là chủ đề quan trọng trong chương trình Python lớp 9 vì nó xuất hiện trong nhiều bài toán tính tổng, đếm, tìm kiếm và kiểm tra số.
Trong mỗi bài dưới đây, em hãy tự viết chương trình trước. Phần gợi ý giúp em chia bài toán thành bước nhỏ; phần lời giải là mã nguồn đầy đủ có thể copy vào tệp .py và chạy bằng Python trên máy.
Ôn nhanh cú pháp vòng lặp
range(n) tạo các số từ 0 đến n - 1. range(1, n + 1) tạo các số từ 1 đến n. Với while, em cần cập nhật biến đếm trong thân vòng lặp, nếu không chương trình có thể chạy vô hạn. Biến tích lũy thường bắt đầu bằng 0 khi tính tổng và bằng 1 khi tính tích.
Bài 1: Tính tổng từ 1 đến n
Đề bài: Nhập số nguyên dương n và tính S = 1 + 2 + ... + n bằng vòng lặp for.
Gợi ý
Tạo tong = 0. Cho biến i chạy từ 1 đến n, sau đó cộng i vào tong. Kiểm tra n phải dương.
Lời giải hoàn chỉnh
n = int(input("Nhập n: "))
if n <= 0:
print("n phải là số nguyên dương")
else:
tong = 0
for i in range(1, n + 1):
tong += i
print(f"Tổng từ 1 đến {n} là {tong}")
Giải thích: Mỗi vòng lặp, i nhận một giá trị mới. Câu lệnh tong += i tương đương tong = tong + i. Với n = 5, chương trình cộng lần lượt 1, 2, 3, 4, 5 và cho kết quả 15.
Bài 2: Đếm số chữ số của một số nguyên
Đề bài: Nhập một số nguyên và đếm xem số đó có bao nhiêu chữ số. Ví dụ 2025 có 4 chữ số, còn 0 có 1 chữ số.
Gợi ý
Dùng vòng lặp while. Mỗi lần chia nguyên số cho 10, ta bỏ đi chữ số cuối. Đếm số lần thực hiện. Với số âm, lấy giá trị tuyệt đối bằng abs().
Lời giải hoàn chỉnh
n = int(input("Nhập số nguyên: "))
so = abs(n)
if so == 0:
so_chu_so = 1
else:
so_chu_so = 0
while so > 0:
so //= 10
so_chu_so += 1
print(f"Số {n} có {so_chu_so} chữ số")
Giải thích: Toán tử // là phép chia lấy phần nguyên. Khi 2025 lần lượt trở thành 202, 20, 2 và 0, biến đếm tăng bốn lần. Trường hợp 0 cần xử lý riêng vì vòng lặp while so > 0 sẽ không chạy lần nào.
Bài 3: Kiểm tra số nguyên tố
Đề bài: Nhập n và cho biết n có phải số nguyên tố hay không. Số nguyên tố lớn hơn 1 và chỉ có hai ước là 1 và chính nó.
Gợi ý
Cho i chạy từ 2 đến căn bậc hai của n. Nếu n chia hết cho i, n không phải số nguyên tố. Dùng biến la_nguyen_to để ghi nhận kết quả.
Lời giải hoàn chỉnh
import math
n = int(input("Nhập n: "))
la_nguyen_to = n >= 2
for i in range(2, math.isqrt(n) + 1):
if n % i == 0:
la_nguyen_to = False
break
if la_nguyen_to:
print(f"{n} là số nguyên tố")
else:
print(f"{n} không phải số nguyên tố")
Giải thích: n % i là phần dư. Nếu bằng 0, n chia hết cho i. Hàm math.isqrt(n) lấy căn bậc hai nguyên. break dừng sớm khi đã tìm thấy ước, giúp chương trình không kiểm tra thừa. Hãy thử 2, 3, 17, 25, 1 và 0.
Bài 4: In bảng cửu chương
Đề bài: Nhập một số từ 1 đến 9 và in bảng nhân của số đó từ 1 đến 10. Nếu nhập ngoài khoảng, thông báo lỗi.
Gợi ý
Kiểm tra dữ liệu trước. Nếu hợp lệ, dùng for i in range(1, 11) và in biểu thức n * i.
Lời giải hoàn chỉnh
n = int(input("Nhập số cần in bảng nhân (1-9): "))
if n < 1 or n > 9:
print("Số không hợp lệ")
else:
print(f"Bảng nhân {n}")
for i in range(1, 11):
print(f"{n} x {i} = {n * i}")
Giải thích: Khoảng của range(1, 11) dừng trước 11 nên có đúng mười lần lặp. F-string giúp dòng kết quả dễ đọc. Em có thể đổi chương trình để in toàn bộ bảng cửu chương bằng hai vòng lặp lồng nhau.
Tổng kết và luyện thêm
Bốn bài đã luyện vòng lặp theo nhiều cách: cộng dồn, chia nhỏ số, tìm ước và in dữ liệu lặp lại. Em có thể xem bài tập về câu lệnh điều kiện để ôn cách kiểm tra dữ liệu, hoặc chuyển sang bài tập về danh sách và chuỗi.
Thử thách: viết chương trình tính tổng các số chẵn từ 1 đến n, đếm số nguyên tố trong một đoạn và cho người dùng nhập lại khi n không hợp lệ. Khi dùng while, luôn tự hỏi: điều kiện nào khiến vòng lặp dừng?
Kiểm thử vòng lặp
Với mỗi vòng lặp, em cần xác định giá trị bắt đầu, điều kiện tiếp tục và bước thay đổi. Nếu dùng range, hãy viết ra vài giá trị đầu tiên để chắc chắn giới hạn cuối có được lấy hay không. Nếu dùng while, hãy kiểm tra biến điều khiển có thay đổi trong thân vòng lặp. Đây là cách tránh lỗi lặp vô hạn.
Bài tự luyện thêm: tính giai thừa của n, in các ước của n, tìm số Fibonacci thứ n và đếm có bao nhiêu số chia hết cho 3 trong đoạn từ 1 đến n. Hãy chạy với n nhỏ trước, sau đó mới thử n lớn.
Từ khoá: 4 bai tap python lop 9 ve vong lap for va while co loi giai, bài tập Python lớp 9 vòng lặp for while, bài tập vòng lặp Python có lời giải