Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Thử thách lập trình Python cơ bản: Trắc nghiệm toán học ngẫu nhiên

Xây dựng chương trình quiz toán học đơn giản: sinh ngẫu nhiên phép tính, người dùng trả lời, chấm điểm cuối cùng.

Yêu cầu

  • Người dùng nhập số câu hỏi.
  • Mỗi câu: 2 số ngẫu nhiên 0-9, 1 phép toán ngẫu nhiên (+, -, *, /, //, %).
  • Người dùng nhập đáp án (float, 2 chữ số thập phân).
  • Chấm điểm real-time, hiển thị đáp án đúng nếu sai.
  • Cuối in tổng điểm.

Mã nguồn hoàn chỉnh

import random
import operator

def generate_question():
    operators = {
        '+': operator.add,
        '-': operator.sub,
        '*': operator.mul,
        '/': operator.truediv,
        '//': operator.floordiv,
        '%': operator.mod
    }
    nums = list(range(10))
    a, b = random.choice(nums), random.choice(nums)
    # Tránh chia cho 0
    if b == 0 and (symbol := random.choice(list(operators.keys()))) in ('/', '//', '%'):
        b = 1
    symbol = random.choice(list(operators.keys()))
    answer = round(operators[symbol](a, b), 2)
    print(f'{a} {symbol} {b}?')
    return answer

def main(n):
    print("Chào mừng đến với Quiz Toán học!\nTrả lời số thực làm tròn 2 chữ số thập phân.")
    score = 0
    for i in range(n):
        correct_answer = generate_question()
        try:
            user_answer = float(input("Đáp án của bạn: "))
        except ValueError:
            print("Vui lòng nhập số!")
            continue
        if abs(user_answer - correct_answer) < 0.01:  # so sánh float an toàn
            print("Chính xác! 🎉")
            score += 1
        else:
            print(f"Sai! Đáp án đúng: {correct_answer}")
    print(f"\nTổng điểm: {score}/{n}")

if __name__ == '__main__':
    try:
        n = int(input("Nhập số câu hỏi: "))
        main(n)
    except ValueError:
        print("Vui lòng nhập số nguyên!")

Ví dụ chạy chương trình

Nhập số câu hỏi: 5
Chào mừng đến với Quiz Toán học!
Trả lời số thực làm tròn 2 chữ số thập phân.
5 + 7?
Đáp án của bạn: 12
Chính xác! 🎉
9 / 9?
Đáp án của bạn: 1
Chính xác! 🎉
4 + 7?
Đáp án của bạn: 11
Chính xác! 🎉
6 // 6?
Đáp án của bạn: 1
Chính xác! 🎉
9 % 3?
Đáp án của bạn: 0
Chính xác! 🎉

Tổng điểm: 5/5

Mở rộng gợi ý

  • Thêm cấp độ độ khó (số lớn hơn, số âm, số thập phân).
  • Ghi log lịch sử chơi vào file/JSON.
  • Giao diện GUI với tkinter hoặc web với Streamlit.
  • Chế độ thi đấu thời gian thực (multiplayer qua socket).

Kết luận

Bài tập này luyện tập: random, operator, input/output, exception handling, float comparison. Hãy mở rộng để học thêm!