我想接收运算符(如'+'、'-'、'*'、'/')并直接在代码体中使用它。 像这样的东西:
char = raw_input('enter your operator:')
a=1
b=5
c=a char b #error! how can i do it?
如果用户输入“*”,则 c 将为 5。
如果用户输入“+”,c 将是 6 等等..
你可以这样做:
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
像这样:
a=1
b=2
op = '+'
result = eval('{}{}{}'.format(a, op, b)) # result = 3
您还必须将 a 和 b 转换为字符串才能使
eval
正常工作。
或使用:
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
这可能比使用 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)