为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

交互式爱情 2019-11-20 12:34:57
我有一个简单的数学任务,执行时遇到问题,涉及随机导入。这个想法是有10个随机生成的问题的测验。我使用random.randint函数获得的数字范围为(0,12),效果很好。选择随机运算符的下一个步骤我遇到了['+','-','*','/']的问题。我在学校时有更复杂的编码,但这是我的练习,我所需要的就是能够随机创建一个问题并提出该问题的能力,同时还能够自行回答该问题以确定给出的答案是否正确。这是我的代码:import randomops = ['+', '-', '*', '/']num1 = random.randint(0,12)num2 = random.randint(0,10)operation = random.choice(ops)print(num1)print(num2)print(operation)maths = num1, operation, num2print(maths)截至目前,我的输出有些混乱。例如:36*(3, '*', 6)显然,它无法从(3,'*',6)确定答案。我将在另一个程序中将此操作转换为子例程,但它需要首先工作!如果我做的不是很好,请原谅我,这是对我留在学校的任务的快速恢复,并且我对这方面的知识还很陌生。提前致谢!
查看完整描述

3 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您如何制作将操作员的字符(例如'+')映射到操作员(例如operator.add)的字典。然后进行采样,设置字符串格式并执行操作。


import random

import 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 quiz


What is 8 - 6?

2

Correct!


What is 10 + 6?

16

Correct!


What is 12 - 1?

11

Correct!


What is 9 + 4?

13

Correct!


What is 0 - 8?

-8

Correct!


What is 1 * 1?

5

Incorrect!


What is 5 * 8?

40

Correct!


What is 11 / 1?

11

Correct!


What is 1 / 4?

0.25

Correct!


What is 1 * 1?

1

Correct!


'Your score was 9/10'


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 652 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信