实现随机数学运算(+, - 或*)

时间:2015-01-26 23:15:55

标签: python variables math random

我的Python代码需要能够随机生成1到3之间的数字,以确定要执行的函数(加法,乘法或减法)。这很好。我随机生成两个数字,需要得到这个随机函数。所以它就像一个基本的数学总和,如3 + 6 = 9.3将被存储为number1(并随机生成)。 +将作为函数存储,也可以随机生成。 6将存储为number2并随机生成。

我遇到的问题是将所有变量组合在一起并让它计算出数学。

所以我可以执行以下操作:(输入的数字将是随机生成的)

number1 = 3
number2 = 8
function = 3 (for the purposes of this: addition)

function then is changed to "+"

我离开了:

answer = number1, function, number2

这显然不起作用。

4 个答案:

答案 0 :(得分:5)

你需要使用一个功能! +-*的相关功能已经存在operator.addoperator.suboperator.mul

import operator
import random

op_mappings = {"+":operator.add,
               "-":operator.sub,
               "*":operator.mul}

op = random.choice(["+", "-", "/"])
# this is better than mapping them to numbers, since it's
# immediately obvious to anyone reading your code what's going on

number1 = random.randint(1,20)
number2 = random.randint(1,20)

answer = op_mappings[op](number1, number2)

操作符函数就像普通表达式一样工作,也就是说:

operator.add(x,y) == x + y
# et. al

因此,您可以将它们用作字典中的对象。如果您以前没有使用过字典,那么现在是学习的好时机!它们像我上面那样用作哈希图,非常有用。

答案 1 :(得分:2)

您可以使用operator模块中定义的二元运算符函数。函数operator.add()operator.sub()operator.mul()都可以使用两个参数调用,以执行其名称所暗示的操作。

要随机选择三个功能中的一个,您只需将它们放入列表中然后使用random.choice()

operators = [operator.add, operator.sub, operator.mul]
random_operator = random.choice(operators)

随机运算符可以应用于您的数字:

result = random_operator(number1, number2)

答案 2 :(得分:1)

number1 = randint(1,20)
number2 = randint(1,20)

if function == 1:
    answer = number1 + number2
elif function == 2:
    answer = number1 - number2
elif function == 3:
    answer = number1 * number2

你不必过度思考它。

答案 3 :(得分:0)

除了使用操作员模块。您可以将字符串计算为代码。

例如:

import random

number1 = random.randint(1,9)
operator = random.choice(r"+-/*")
number2 = random.randint(1,9)

result = eval( str(number1) + operator + str(number2))
print(number1,operator,number2,"=",result)

输出:

8 * 4 = 32
  • 请注意,eval不应与不受信任的输入一起使用,例如来自input的输入,或任何来自用户互动的输入。因为它本质上运行其中的代码,如果内部有任何恶意代码,IT将执行它。