在本教程中,我们将编写挑战解决方案。
我们必须生成一组随机的基本算术运算。用户将给出问题数量,我们必须生成问题。在每个问题之后,用户都会回答。在程序结束时,我们必须给出分数。让我们尝试一下。
#导入随机和运算符模块 import random import operator # main function # taking number of questions that we have to generate def main(n): print("欢迎参加测验\n您应该回答最多2位小数的浮点数") #导入随机和运算符模块 score = 0 #循环生成n个问题 for i in range(n): #得到问题的答案和正确性 is_correct, answer = question(i) # 检查is_correct是否为True if is_correct: #如果正确,将分数加1 score += 1 print('Correct Congrats!') else: #打印正确答案 print(f'Incorrect! Answer: {answer}') # 显示总分 print(f'Total score: {score}') # 问题函数 def question(n): # 从generate_function获得答案 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)] #从nums中获得两个随机数进行计算 _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)
如果运行上面的代码,您将得到以下结果。
欢迎参加测验 您应该回答最多2位小数的浮点数 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
您还可以通过添加一些其他功能来改善问题,例如增加难度,生成从容易到难的问题等。请自己尝试。