Python - Bài 20: Dự án Đố vui Toán học (Python & Toán)

Bài 20: Dự án cuối — "Đố vui Toán học" chấm điểm tự động

🎯 Mục tiêu bài học
• Dùng random để máy tự ra đề mỗi lần mỗi khác.
• Dùng vòng lặp để hỏi nhiều câu và cộng điểm.
• Dùng if / elif để xếp loại: Giỏi, Khá, Cần cố gắng...
Sinh 2 songau nhienHoi & nhancau tra loiCham diem,cong diemlap lai cho cau tiep theoVong lap cua tro choi do vui
Mỗi câu: sinh số ngẫu nhiên → hỏi → chấm điểm → lặp lại.
Dự án khép lại cả khoá! Ở bài cuối này ta làm một trò chơi Đố vui Toán học: máy tự nghĩ ra các phép tính, hỏi bạn, chấm điểm và cuối cùng xếp loại. Nó gộp tất cả những gì ta đã học: biến, phép tính, random, vòng lặp, if / elif và hàm.

1. Cho máy "nghĩ ra đề" với random

Thư viện random giúp máy chọn số bất kỳ. Lệnh random.randint(1, 9) cho một số nguyên ngẫu nhiên từ 1 đến 9. Nhờ vậy mỗi lần chơi đề lại khác nhau!
import random
a = random.randint(1, 9)
b = random.randint(1, 9)
print(a, "+", b, "= ?")
💡 randint(1, 9) có thể ra 1, 2, ... đến 9 – kể cả hai đầu.

2. So sánh đáp án của người chơi

Ta tính đáp án đúng (dap_an = a + b), rồi so với số người chơi nhập. Nếu bằng nhau thì cộng 1 điểm.
dap_an = a + b
tra_loi = int(input("Tra loi: "))
if tra_loi == dap_an:
    diem = diem + 1
    print("Dung roi!")
else:
    print("Sai roi, dap an la", dap_an)
💡 Biến diem nhớ tổng số câu đúng – cứ đúng thì tăng thêm 1.

3. Hỏi nhiều câu bằng vòng lặp

Để hỏi 5 câu, ta đặt phần "sinh đề – hỏi – chấm" vào trong một vòng lặp for chạy 5 lần. Nhớ cho diem = 0 ở đầu.
diem = 0
for cau in range(5):
    # sinh de, hoi, cham diem o day
    ...
💡 range(5) chạy 5 lần → đúng 5 câu hỏi. Muốn 10 câu thì đổi thành range(10).

4. Xếp loại theo điểm với if / elif

Sau khi hỏi xong, máy nhìn vào tổng diem để đưa ra lời nhận xét. Đây chính là kỹ năng rẽ nhánh ở bài trước.
0 - 2 diemCan co gang3 diemKha4 diemGioi5 diemXuat sacXếp loại theo số câu đúngDùng if / elif để chọn lời khen phù hợp
Sau 5 câu, máy xếp loại dựa trên số câu đúng.
if diem == 5:
    print("Xuat sac!")
elif diem == 4:
    print("Gioi!")
elif diem == 3:
    print("Kha")
else:
    print("Can co gang them")
💡 Máy xét từ trên xuống: gặp điều kiện đúng đầu tiên thì in lời khen tương ứng rồi dừng.

5. Ghép thành trò chơi hoàn chỉnh

Gộp lại: đặt điểm = 0 → lặp 5 lần (sinh đề, hỏi, chấm) → in tổng điểm → xếp loại. Vậy là ta có một trò chơi Đố vui Toán học thật sự, biết tự ra đề và chấm điểm! Toàn bộ chương trình nằm ở phần thí nghiệm bên dưới.
🎉 Đây là bài cuối cùng của khoá – bạn đã đi từ dòng print đầu tiên đến một trò chơi hoàn chỉnh. Tuyệt vời!

📚 Bảng ghi nhớ

Công cụVai trò trong trò chơi
import randomCho máy tự ra đề ngẫu nhiên
random.randint(1, 9)Chọn một số nguyên bất kỳ từ 1 đến 9
for ... range(5)Hỏi lặp lại 5 câu
diem = diem + 1Cộng điểm khi trả lời đúng
if / elif / elseXếp loại theo tổng điểm

✎ Câu hỏi trắc nghiệm

Câu 1. Lệnh random.randint(1, 9) có thể cho ra những số nào?

randint(1, 9) chọn ngẫu nhiên một số nguyên từ 1 đến 9, bao gồm cả hai đầu.

Câu 2. Vì sao cần import random ở đầu chương trình đố vui?

import random nạp thư viện random, nhờ đó dùng được randint để máy tự nghĩ ra đề mỗi lần một khác.

Câu 3. Câu lệnh diem = diem + 1 có ý nghĩa gì?

Máy lấy giá trị diem hiện tại cộng thêm 1 rồi lưu lại → đó là cách cộng điểm.

Câu 4. Muốn trò chơi hỏi đúng 5 câu, ta dùng vòng lặp nào?

range(5) lặp 5 lần → hỏi đúng 5 câu. range(10) sẽ hỏi 10 câu.

Câu 5. Theo bảng xếp loại trong bài, được 4 câu đúng thì máy khen là gì?

Theo bảng: 5 → Xuất sắc, 4 → Giỏi, 3 → Khá, 0–2 → Cần cố gắng.
💻 Phòng thí nghiệm Python: Đây là trò chơi Đố vui Toán học hoàn chỉnh! Bấm Chạy, máy sẽ tự ra 5 phép cộng và hỏi bạn. Trả lời xong 5 câu, máy chấm điểm và xếp loại. Mỗi lần chạy đề lại khác nhau đấy!
(Kết quả sẽ hiện ở đây)
🎉 Thử thách cuối khoá: Đổi trò chơi thành phép nhân (dùng dấu *dap_an = a * b), hoặc tăng lên 10 câu bằng cách đổi range(5) thành range(10). Chúc mừng bạn đã hoàn thành cả khoá học! 🎉