Lập trình

Bài tập Python cho học sinh THCS, có lời giải

Bài tập Python cho học sinh THCS, có lời giải

Dưới đây là 10 bài tập Python cho học sinh THCS, chia 3 mức từ dễ đến khó: nhập dữ liệu và tính toán, vòng lặp và điều kiện, rồi các thuật toán nhỏ. Mỗi bài có gợi ý, lời giải mẫu và bộ dữ liệu để con tự kiểm tra. Bài tập Python lớp 8, lớp 9 trong bài chỉ dùng lệnh cơ bản: input, print, if, for, while, phép chia lấy dư %.

Cách dùng hợp nhất: con đọc đề, tự làm, chạy thử với dữ liệu đã cho, chỉ mở lời giải sau khi đã có bài của mình. Nếu chưa cài Python ở nhà, xem bài cài Scratch, Thonny và VS Code.

10 bài Python chia 3 mức: nhập tính in, lặp và điều kiện, thuật toán nhỏ, kèm cách tự kiểm tra lời giải

Mức 1: nhập, tính, in

Bài 1. Diện tích và chu vi hình chữ nhật. Nhập chiều dài, chiều rộng (số thực), in diện tích và chu vi.

Gợi ý: dùng float(input()) để đọc số có phần thập phân.

dai = float(input("Chiều dài: "))
rong = float(input("Chiều rộng: "))
print("Diện tích:", dai * rong)
print("Chu vi:", 2 * (dai + rong))

Thử: 5 và 3 → diện tích 15.0, chu vi 16.0.

Bài 2. Chẵn hay lẻ. Nhập một số nguyên, in “chẵn” hoặc “lẻ”.

Gợi ý: số chẵn chia 2 dư 0.

n = int(input("Nhập số nguyên: "))
if n % 2 == 0:
    print("chẵn")
else:
    print("lẻ")

Thử: 7 → lẻ; 0 → chẵn; -4 → chẵn.

Bài 3. Giải phương trình ax + b = 0. Nhập a, b. In nghiệm, hoặc thông báo vô nghiệm, vô số nghiệm.

Gợi ý: trường hợp a = 0 phải xét riêng, vì không chia được cho 0.

a = float(input("a = "))
b = float(input("b = "))
if a != 0:
    print("x =", -b / a)
elif b == 0:
    print("Vô số nghiệm")
else:
    print("Vô nghiệm")

Thử: a = 2, b = -6 → x = 3.0; a = 0, b = 0 → vô số nghiệm; a = 0, b = 5 → vô nghiệm.

Mức 2: vòng lặp và điều kiện

Bài 4. Tổng từ 1 đến n. Nhập n, in 1 + 2 + … + n.

n = int(input("n = "))
tong = 0
for i in range(1, n + 1):
    tong = tong + i
print("Tổng:", tong)

Thử: n = 10 → 55; n = 1 → 1. Thử thêm: so với công thức n × (n + 1) / 2 xem có khớp không.

Bài 5. Bảng cửu chương. Nhập một số từ 2 đến 9, in bảng nhân của số đó.

k = int(input("Bảng mấy? "))
for i in range(1, 11):
    print(k, "x", i, "=", k * i)

Thử: 7 → dòng cuối là 7 x 10 = 70.

Bài 6. Kiểm tra số nguyên tố. Nhập n, in n có phải số nguyên tố không.

Gợi ý: số nguyên tố lớn hơn 1 và chỉ chia hết cho 1 và chính nó. Đếm số ước từ 2 đến n − 1.

n = int(input("n = "))
la_nguyen_to = n > 1
for d in range(2, n):
    if n % d == 0:
        la_nguyen_to = False
        break
print("Nguyên tố" if la_nguyen_to else "Không nguyên tố")

Thử: 13 → nguyên tố; 1 → không; 2 → nguyên tố; 21 → không.

Nâng cao: chỉ cần thử d đến căn bậc hai của n. Con thử sửa vòng lặp thành while d * d <= n.

Mức 3: thuật toán nhỏ

Bài 7. Ước chung lớn nhất (thuật toán Euclid). Nhập a, b dương, in ƯCLN.

Gợi ý: ƯCLN(a, b) = ƯCLN(b, a chia b lấy dư), lặp đến khi số dư bằng 0.

a = int(input("a = "))
b = int(input("b = "))
while b != 0:
    a, b = b, a % b
print("ƯCLN:", a)

Thử: 12 và 18 → 6; 17 và 5 → 1. Bật chế độ chạy từng bước để xem a, b thay đổi qua mỗi vòng.

Bài 8. Đảo ngược chuỗi và kiểm tra đối xứng. Nhập một từ, in từ đảo ngược và cho biết có đọc xuôi ngược như nhau không.

s = input("Nhập một từ: ")
dao = ""
for ky_tu in s:
    dao = ky_tu + dao
print("Đảo ngược:", dao)
print("Đối xứng" if dao == s else "Không đối xứng")

Thử: “python” → “nohtyp”, không đối xứng; “level” → đối xứng.

Ghi chú: Python có cách ngắn hơn là s[::-1]. Con nên tự viết vòng lặp trước để hiểu cách làm.

Bài 9. Số lớn nhất trong dãy. Nhập n, rồi nhập n số nguyên. In số lớn nhất, không dùng hàm max.

n = int(input("Có bao nhiêu số? "))
lon_nhat = int(input("Số thứ 1: "))
for i in range(2, n + 1):
    x = int(input("Số thứ " + str(i) + ": "))
    if x > lon_nhat:
        lon_nhat = x
print("Lớn nhất:", lon_nhat)

Thử: 3, 8, -2 → 8; dãy toàn số âm -5, -1, -9 → -1. Đây là lý do không gán lon_nhat = 0 ban đầu.

Bài 10. Trò chơi đoán số. Máy chọn ngẫu nhiên một số từ 1 đến 100. Người chơi đoán, máy báo “lớn hơn” hoặc “nhỏ hơn” đến khi đúng, rồi in số lần đoán.

import random
bi_mat = random.randint(1, 100)
so_lan = 0
doan = 0
while doan != bi_mat:
    doan = int(input("Đoán: "))
    so_lan += 1
    if doan < bi_mat:
        print("Lớn hơn")
    elif doan > bi_mat:
        print("Nhỏ hơn")
print("Đúng rồi! Số lần đoán:", so_lan)

Thử thách: nếu luôn đoán số ở giữa khoảng còn lại, cần nhiều nhất bao nhiêu lần? Con thử chơi và ghi lại. Đây là ý tưởng của tìm kiếm nhị phân.

Làm ngay được: cách tự chấm bài

Trước khi so với lời giải, con tự chấm theo 4 bước:

  1. Chạy với dữ liệu thử trong bài. Kết quả phải khớp.
  2. Thêm một trường hợp đặc biệt con tự nghĩ: số 0, số âm, số 1, chuỗi rỗng, dãy chỉ có 1 phần tử.
  3. Đọc lại tên biến. Người khác đọc có hiểu biến đó lưu gì không?
  4. Giải thích lại bằng lời cho bố mẹ hoặc bạn: chương trình làm gì, theo thứ tự nào.

Kế hoạch 2 tuần cho con tự luyện:

Buổi Bài Thời gian
1 Bài 1–3 45 phút
2 Bài 4–5 45 phút
3 Bài 6 và phần nâng cao 45 phút
4 Bài 7–8 45 phút
5 Bài 9–10 60 phút
6 Làm lại 3 bài khó nhất mà không nhìn lời giải 45 phút

Buổi 6 quan trọng nhất. Làm lại được không nhìn lời giải nghĩa là con đã thực sự nắm bài, không chỉ hiểu khi đọc.

Bước tiếp theo sau 10 bài

Khi đã làm chắc 10 bài này, con sẵn sàng cho dự án nhỏ có tương tác: trò chơi đố vui, máy tính bỏ túi, trò chơi chữ. Bài Dự án Python cho học sinh có thêm ý tưởng.

Chặng Python trong lộ trình Lập trình cho trẻ của Smart Pens dành cho học sinh 10–14 tuổi (lớp 5–9): con viết code bằng chữ lần đầu, giải bài toán nhỏ và viết chương trình có tương tác, kết thúc bằng trò chơi bắn bia “Target practice” viết bằng Python. Lớp học trực tiếp tại trung tâm ở Ngũ Hành Sơn, Đà Nẵng; phụ huynh có thể đăng ký học thử để con thử một buổi.

Câu hỏi thường gặp

Học sinh lớp 8 chưa học Python ở trường có làm được các bài này không?

Làm được nếu con đã biết cách nhập, in, biến, if và vòng lặp for. Mức 1 chỉ cần nhập, tính và in. Nếu con chưa biết gì về Python, nên học các lệnh cơ bản trước rồi quay lại.

Nên xem lời giải lúc nào?

Sau khi con đã tự làm ít nhất 15–20 phút, hoặc đã có bài chạy được và muốn so cách làm. Mở lời giải quá sớm thì con chỉ nhớ đáp án chứ không luyện được cách nghĩ.

Code của con khác lời giải nhưng vẫn chạy đúng thì sao?

Hoàn toàn bình thường. Một bài có nhiều cách giải đúng. Hãy chạy cả hai với cùng các bộ dữ liệu thử, rồi so xem cách nào dễ đọc hơn.

Dùng phần mềm gì để chạy Python ở nhà?

Người mới nên dùng Thonny vì dễ cài và có chế độ chạy từng bước. Bài hướng dẫn cài Scratch, Thonny và VS Code trên blog Smart Pens có các bước chi tiết.

Bài viết có sự hỗ trợ của AI. Thấy thông tin chưa đúng? Báo cho Smart Pens qua Zalo 0384 582 636 để chúng tôi sửa.

← Tất cả bài viết

Học cùng Smart Pens

Muốn con thử trước? Đăng ký học thử miễn phí.

Cho con học thử lập trình hoặc tiếng Anh miễn phí 1 tuần.