在Python中,如何将变量与字符相乘?

在Python中,如何将变量与字符相乘?,python,random,operators,Python,Random,Operators,我在用Python做一个项目,其中包括随机选择一个运算符乘法、除法、加法和减法,然后对两个整数执行该运算。到目前为止,我的代码将以字符的形式随机选择运算符。我正在努力的是做数学题。这是我的密码: 从随机导入randint 输入=2 输入b=3 输出=0 期望输出=5; 可能的操作:加法、减法、乘法、除法 添加=+ 乘=* 除以=/ 减去=- 在这四个选项中随机选择 选择器=randint1,4 选择=添加 如果选择器==1: 选择=添加 如果选择器==2: 选择=乘 如果选择器==3: 选择=划

我在用Python做一个项目,其中包括随机选择一个运算符乘法、除法、加法和减法,然后对两个整数执行该运算。到目前为止,我的代码将以字符的形式随机选择运算符。我正在努力的是做数学题。这是我的密码:

从随机导入randint 输入=2 输入b=3 输出=0 期望输出=5; 可能的操作:加法、减法、乘法、除法 添加=+ 乘=* 除以=/ 减去=- 在这四个选项中随机选择 选择器=randint1,4 选择=添加 如果选择器==1: 选择=添加 如果选择器==2: 选择=乘 如果选择器==3: 选择=划分 如果选择器==4: 选择=减去 现在我要做的是,取输入A,分别用输入B中选择的运算符对其进行乘法、除法、加法或减法


谢谢,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吗?刚刚开始: