如何随机选择一个数学运算符并用它问重复的数学问题?

我有一个简单的数学任务,执行时遇到问题,涉及随机导入。这个想法是有10个随机生成的问题的测验。我使用random.randint函数获得的数字范围为(0,12),效果很好。选择随机运算符的下一个步骤我遇到了['+','-','*','/']的问题。


我在学校时有更复杂的编码,但这是我的练习,我所需要的就是能够随机创建一个问题并提出该问题的能力,同时还能够自行回答该问题以确定给出的答案是否正确。这是我的代码:


import random


ops = ['+', '-', '*', '/']

num1 = random.randint(0,12)

num2 = random.randint(0,10)

operation = random.choice(ops)


print(num1)

print(num2)

print(operation)


maths = num1, operation, num2


print(maths)

截至目前,我的输出有些混乱。例如:


3

6

*

(3, '*', 6)

显然,它无法从(3,'*',6)确定答案。我将在另一个程序中将此操作转换为子例程,但它需要首先工作!


如果我做的不是很好,请原谅我,这是对我留在学校的任务的快速恢复,并且我对这方面的知识还很陌生。提前致谢!


交互式爱情
浏览 641回答 3
3回答

翻翻过去那场雪

您如何制作将操作员的字符(例如'+')映射到操作员(例如operator.add)的字典。然后进行采样,设置字符串格式并执行操作。import randomimport operator生成随机数学表达式def randomCalc():    ops = {'+':operator.add,           '-':operator.sub,           '*':operator.mul,           '/':operator.truediv}    num1 = random.randint(0,12)    num2 = random.randint(1,10)   # I don't sample 0's to protect against divide-by-zero    op = random.choice(list(ops.keys()))    answer = ops.get(op)(num1,num2)    print('What is {} {} {}?\n'.format(num1, op, num2))    return answer询问用户def askQuestion():    answer = randomCalc()    guess = float(input())    return guess == answer最后进行多问题测验def quiz():    print('Welcome. This is a 10 question math quiz\n')    score = 0    for i in range(10):        correct = askQuestion()        if correct:            score += 1            print('Correct!\n')        else:            print('Incorrect!\n')    return 'Your score was {}/10'.format(score)一些测试>>> quiz()Welcome. This is a 10 question math quizWhat is 8 - 6?2Correct!What is 10 + 6?16Correct!What is 12 - 1?11Correct!What is 9 + 4?13Correct!What is 0 - 8?-8Correct!What is 1 * 1?5Incorrect!What is 5 * 8?40Correct!What is 11 / 1?11Correct!What is 1 / 4?0.25Correct!What is 1 * 1?1Correct!'Your score was 9/10'
打开App,查看更多内容
随时随地看视频慕课网APP