如何使用字符或字符串作为放置在操作数之间的运算符? [重复]

问题描述 投票:0回答:4

我想接收运算符(如'+'、'-'、'*'、'/')并直接在代码体中使用它。 像这样的东西:

char = raw_input('enter your operator:')
a=1
b=5
c=a char b    #error! how can i do it?

如果用户输入“*”,则 c 将为 5。

如果用户输入“+”,c 将是 6 等等..

python string
4个回答
1
投票

你可以这样做:

import operator

operations = {'+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.truediv}

char = raw_input('enter your operator:')
a = 1
b = 5
c = operations[char](a, b)

print c

输出 (对于 char = +)

6

0
投票

像这样:

a=1
b=2
op = '+'
result = eval('{}{}{}'.format(a, op, b)) # result = 3

您还必须将 a 和 b 转换为字符串才能使

eval
正常工作。


0
投票

或使用:

from operator import *
char = raw_input('enter your operator:')
a=1
b=5
c={'+':add,'-':sub,'*':mul,'/':truediv}
print(c[char](a,b))

int.some operator name

char = raw_input('enter your operator:')
a=1
b=5
c={'+':int.__add__,'-':int.__sub__,'*':int.__mul__,'/':int.__truediv__}
print(c[char](a,b))

两种情况的演示输出:

enter your operator:*
5

0
投票

这可能比使用 operators 慢,但我提供了可能有用的链接以及使用 lambda 的另一种方法,可能有助于理解。使用

switch dict
方法,例如其他人使用的 在这里解释 我正在使用
lambda
使用此
operators
dict
:

将输入关联到自定义方法中
operators = {
    '-': lambda a, b: a-b,
    '+': lambda a, b: a+b,
    '/': lambda a, b: a/b,
    '*': lambda a, b: a*b}
char = raw_input('enter your operator:')
a=1
b=5
c=operators[char](a, b)
print(c)
© www.soinside.com 2019 - 2024. All rights reserved.