实施随机数学运算(+、- 或 *)

Implement a random math operation (+, -, or *)

我的 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

这显然行不通。

您需要使用一个函数! +-* 的相关函数已经存在 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

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

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

要select三个函数中任意一个,可以简单的把它们放在一个列表中,然后用random.choice():

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

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

result = random_operator(number1, number2)
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

你不必想太多。

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

例如:

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 的输入,或任何来自用户交互的输入。因为它本质上是运行它里面的代码,所以如果里面有任何恶意代码,它就会执行它。