我的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
这显然不起作用。
答案 0 :(得分:5)
你需要使用一个功能! +
,-
和*
的相关功能已经存在operator.add
,operator.sub
和operator.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将执行它。