实施随机数学运算(+、- 或 *)
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.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
因此您可以将它们用作字典中的对象。如果您以前没有用过字典,现在正是学习的好时机!就像我上面做的那样,它们作为哈希图非常有用。
您可以使用 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
的输入,或任何来自用户交互的输入。因为它本质上是运行它里面的代码,所以如果里面有任何恶意代码,它就会执行它。
我的 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.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
因此您可以将它们用作字典中的对象。如果您以前没有用过字典,现在正是学习的好时机!就像我上面做的那样,它们作为哈希图非常有用。
您可以使用 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
的输入,或任何来自用户交互的输入。因为它本质上是运行它里面的代码,所以如果里面有任何恶意代码,它就会执行它。