ในบทช่วยสอนนี้ เราจะเขียนวิธีแก้ปัญหาสำหรับความท้าทาย
ความท้าทาย
เราต้องสร้างชุดปฏิบัติการเลขคณิตพื้นฐานแบบสุ่ม ผู้ใช้จะให้จำนวนคำถามและเราต้องสร้างคำถาม หลังจากทุกคำถามผู้ใช้จะตอบคำถามนั้น จบรายการเราต้องให้คะแนน มาลองดูกัน
ตัวอย่าง
# importing random and operator modules
import random
import operator
# main function
# taking number of questions that we have to generate
def main(n):
print("Welcome to the quiz\nYou should answer floats upto 2 decimals")
# initialising score to 0
score = 0
# loop to generate n questions
for i in range(n):
# getting answer and correctness of a question
is_correct, answer = question(i)
# checking whether is_correct is True or not
if is_correct:
# increment score by 1 if correct
score += 1
print('Correct Congrats!')
else:
# printing the correct answer
print(f'Incorrect! Answer: {answer}')
# displaying the total score
print(f'Total score: {score}')
# function for the question
def question(n):
# getting answer from the generate_function
answer = generate_question()
# taking answer from the user
user_answer = float(input("Answer: "))
# returning answer to the main function
return user_answer == answer, answer
# function to generate a random question
def generate_question():
# initialising operators for random generation
operators = {
'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.truediv,
'//' : operator.floordiv,
'%' : operator.mod
}
# initialising numbers for expressions
nums = [i for i in range(10)]
# getting two random numbers from nums for calculation
_1, _2 = nums[random.randint(0, 9)], nums[random.randint(0, 9)]
# generating random operator from the list of operators
symbol = list(operators.keys())[random.randint(0, 5)]
# calculating the answer
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 upto 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
บทสรุป
คุณยังสามารถปรับปรุงคำถามโดยเพิ่มคุณสมบัติอื่นๆ เช่น การเพิ่มความยาก การสร้างคำถามที่ง่ายไปยาก เป็นต้น ลองด้วยตัวคุณเอง ฉันหวังว่าคุณจะสนุกกับการกวดวิชา หากคุณมีข้อสงสัยใด ๆ ให้พูดถึงในส่วนความคิดเห็น