在Python中,如何将变量与字符相乘?
我在用Python做一个项目,其中包括随机选择一个运算符乘法、除法、加法和减法,然后对两个整数执行该运算。到目前为止,我的代码将以字符的形式随机选择运算符。我正在努力的是做数学题。这是我的密码: 从随机导入randint 输入=2 输入b=3 输出=0 期望输出=5; 可能的操作:加法、减法、乘法、除法 添加=+ 乘=* 除以=/ 减去=- 在这四个选项中随机选择 选择器=randint1,4 选择=添加 如果选择器==1: 选择=添加 如果选择器==2: 选择=乘 如果选择器==3: 选择=划分 如果选择器==4: 选择=减去 现在我要做的是,取输入A,分别用输入B中选择的运算符对其进行乘法、除法、加法或减法在Python中,如何将变量与字符相乘?,python,random,operators,Python,Random,Operators,我在用Python做一个项目,其中包括随机选择一个运算符乘法、除法、加法和减法,然后对两个整数执行该运算。到目前为止,我的代码将以字符的形式随机选择运算符。我正在努力的是做数学题。这是我的密码: 从随机导入randint 输入=2 输入b=3 输出=0 期望输出=5; 可能的操作:加法、减法、乘法、除法 添加=+ 乘=* 除以=/ 减去=- 在这四个选项中随机选择 选择器=randint1,4 选择=添加 如果选择器==1: 选择=添加 如果选择器==2: 选择=乘 如果选择器==3: 选择=划
谢谢,Avidh使用带有lambda函数的字典
import random
my_operators = {'+' : lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
'/': lambda a, b: a / b
}
actions = list(my_operators.keys())
chosen = random.choice(actions)
print (my_operators[chosen] (inputA, inputB))
请注意,python具有可用的功能,您可以使用它来完成以下任务:
import operator
my_operators = {'+' : operator.add,
'-': operator.add,
'*': operator.mul,
'/': operator.div
}
使用具有lambda函数的字典
import random
my_operators = {'+' : lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
'/': lambda a, b: a / b
}
actions = list(my_operators.keys())
chosen = random.choice(actions)
print (my_operators[chosen] (inputA, inputB))
请注意,python具有可用的功能,您可以使用它来完成以下任务:
import operator
my_operators = {'+' : operator.add,
'-': operator.add,
'*': operator.mul,
'/': operator.div
}
您可以只执行该操作,而不是将运算符存储在变量中。然后,您的ifs将如下所示:
result = None
if chooser == 1:
result = inputA + inputB
if chooser == 2:
result = inputA * inputB
if chooser == 3:
result = inputA / inputB
if chooser == 4:
result = inputA - inputB
print(result)
您可以只执行该操作,而不是将运算符存储在变量中。然后,您的ifs将如下所示:
result = None
if chooser == 1:
result = inputA + inputB
if chooser == 2:
result = inputA * inputB
if chooser == 3:
result = inputA / inputB
if chooser == 4:
result = inputA - inputB
print(result)
更好的方法是使用函数而不是字符串,并将运算符字符串映射到字典中的函数 Module operator包含您需要的函数:add、sub、mul和div。您可以这样设置字典:
import operator
ops = {'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.div}
要随机选择运算符,请从字典的键中进行随机选择:
import random
op = random.choice(ops.keys())
result = ops[op](inputA, inputB)
print('{} {} {} = {}'.format(inputA, op, inputB, result)
或者,您可以使用元组列表:
ops = [('+', operator.add), ('-', operator.sub), ...]
op, func = random.choice(ops)
result = func(inputA, inputB)
print('{} {} {} = {}'.format(inputA, op, inputB, result)
更好的方法是使用函数而不是字符串,并将运算符字符串映射到字典中的函数 Module operator包含您需要的函数:add、sub、mul和div。您可以这样设置字典:
import operator
ops = {'+': operator.add,
'-': operator.sub,
'*': operator.mul,
'/': operator.div}
要随机选择运算符,请从字典的键中进行随机选择:
import random
op = random.choice(ops.keys())
result = ops[op](inputA, inputB)
print('{} {} {} = {}'.format(inputA, op, inputB, result)
或者,您可以使用元组列表:
ops = [('+', operator.add), ('-', operator.sub), ...]
op, func = random.choice(ops)
result = func(inputA, inputB)
print('{} {} {} = {}'.format(inputA, op, inputB, result)
这看起来像是一个家庭作业问题,但接下来 实现这一点的一种更直接、更通俗的方法是使用函数式编程风格,并将每个操作与执行该函数的匿名函数lambda配对:
from random import choice
inputA = 2
inputB = 3
output = 0
desiredOutput = 5;
#possible operations: addition, subtraction, multiplication, division
ops = dict(
add = ("+", lambda a,b: a+b),
multiply = ("*", lambda a,b: a*b),
divide = ("/", lambda a,b: a/b),
subtract = ("-", lambda a,b: a-b),
)
#choose randomly among the four operations
symbol, function = ops[ choice(ops.keys()) ]
output = function(inputA, inputB)
print ( "{inputA} {symbol} {inputB} = {output}".format(**locals()) )
先发制人:任何告诉您使用exec或eval的人都不懂Python,如果您不明白为什么这是个坏主意,请阅读。实际上。这看起来像是一个家庭作业问题,但接下来 实现这一点的一种更直接、更通俗的方法是使用函数式编程风格,并将每个操作与执行该函数的匿名函数lambda配对:
from random import choice
inputA = 2
inputB = 3
output = 0
desiredOutput = 5;
#possible operations: addition, subtraction, multiplication, division
ops = dict(
add = ("+", lambda a,b: a+b),
multiply = ("*", lambda a,b: a*b),
divide = ("/", lambda a,b: a/b),
subtract = ("-", lambda a,b: a-b),
)
#choose randomly among the four operations
symbol, function = ops[ choice(ops.keys()) ]
output = function(inputA, inputB)
print ( "{inputA} {symbol} {inputB} = {output}".format(**locals()) )
先发制人:任何告诉您使用exec或eval的人都不懂Python,如果您不明白为什么这是个坏主意,请阅读。实际上。只需去掉引号即可进行操作,即inputA+inputB将inputA添加到inputB。只需去掉引号即可进行操作,例如,inputA+inputB会将inputA添加到inputB中。我可以建议使用运算符模块而不是lambdas吗?刚刚开始:我可以建议使用运算符模块而不是lambdas吗?刚刚开始: