基本的Python编程挑战

在本教程中,我们将编写挑战解决方案。

挑战

我们必须生成一组随机的基本算术运算。用户将给出问题数量,我们必须生成问题。在每个问题之后,用户都会回答。在程序结束时,我们必须给出分数。让我们尝试一下。

示例

#导入随机和运算符模块
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

结论

您还可以通过添加一些其他功能来改善问题,例如增加难度,生成从容易到难的问题等。请自己尝试。