Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โจทย์การเขียนโปรแกรม Python ขั้นพื้นฐาน: สร้างแบบทดสอบคณิตศาสตร์สุ่ม

ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมสร้างแบบทดสอบโจทย์คณิตศาสตร์พื้นฐานสุ่ม ผู้ใช้ระบุจำนวนข้อ โปรแกรมจะสุ่มโจทย์ ให้ผู้ใช้ตอบ และคำนวณคะแนนสุดท้าย

รายละเอียดโจทย์

  • ผู้ใช้ระบุจำนวนข้อสอบ
  • โปรแกรมสุ่มโจทย์คณิตศาสตร์พื้นฐาน (+, -, *, /, //, %)
  • ผู้ใช้ตอบทีละข้อ
  • แสดงผลถูก/ผิดทันที
  • สรุปคะแนนรวมท้ายสุด

โค้ดตัวอย่าง

import random
import operator

def main(n):
    print("Welcome to the quiz\nYou should answer floats up to 2 decimals")
    score = 0
    
    for i in range(n):
        is_correct, answer = question(i)
        if is_correct:
            score += 1
            print('Correct Congrats!')
        else:
            print(f'Incorrect! Answer: {answer}')
    
    print(f'Total score: {score}')

def question(n):
    answer = generate_question()
    user_answer = float(input("Answer: "))
    return user_answer == answer, answer

def generate_question():
    operators = {
        '+' : operator.add,
        '-' : operator.sub,
        '*' : operator.mul,
        '/' : operator.truediv,
        '//' : operator.floordiv,
        '%' : operator.mod
    }
    nums = [i for i in range(10)]
    _1, _2 = nums[random.randint(0, 9)], nums[random.randint(0, 9)]
    symbol = list(operators.keys())[random.randint(0, 5)]
    answer = round(operators.get(symbol)(_1, _2), 2)
    print(f'{_1} {symbol} {_2}?')
    return answer

if __name__ == '__main__':
    main(5)

ตัวอย่างผลลัพธ์

Welcome to the quiz
You should answer floats up to 2 decimals
5 + 7? Answer: 12
Correct Congrats!
9 / 9? Answer: 1
Correct Congrats!
4 + 7? Answer: 11
Correct Congrats!
6 // 6? Answer: 1.0
Correct Congrats!
9 % 3? Answer: 0
Correct Congrats!
Total score: 5

แนวทางปรับปรุง

  • เพิ่มระดับความยาก (ตัวเลขใหญ่ขึ้น, ทศนิยม)
  • จัดลำดับโจทย์จากง่ายไปยาก
  • เพิ่มจับเวลาตอบ
  • บันทึกคะแนนสูงสุด (High Score)

สรุป

โปรแกรมนี้เป็นตัวอย่างการใช้ random, operator, และการโต้ตอบกับผู้ใช้ ลองปรับปรุงเพิ่มเติมด้วยตัวเองได้ หากมีข้อสงสัย สามารถถามได้ในส่วนความคิดเห็น