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