Python:使用算术运算符的ASCII值来执行操作

时间:2015-04-21 08:44:51

标签: python

我必须在十进制数之间执行某个算术运算。操作可以添加'减去'或者'乘以',所需的操作将与数字一起传递给我们的函数。 我想这样做的方式是我想存储操作的ASCII值' +',' - '和' *'然后以某种方式使用它来执行两个数字之间的操作。

def (a, b, op):
  dict{'add':ord('+'), 'subtract':ord('-'), 'multiply':ord('*')}
  return a dict[op] b # this statement does not work

有没有办法在python中实现类似的东西?

我知道一种替代方法是使用:

from operator import add,sub,mul

然后使用哈希中的导入值代替,但对于这个问题,我有兴趣找出它是否可能按照我在原始问题中提出的方式进行。谢谢!

2 个答案:

答案 0 :(得分:1)

不,这个

a dict[op] b

无效的Python。

使用operator中的功能。

答案 1 :(得分:1)

是的,python中有一个eval()函数,它将字符串作为输入并返回输出,因此您稍微需要更改方法,eval()通常用作:

print eval("2 + 3")
>>> 5

所以新代码看起来像:

def evaluate(a, b, op):
    dict = {'add':'+', 'subtract':'-', 'multiply':'*'}
    return eval(str(a)+ dict[op] +str(b))

print evaluate(2,3,"add")
>>> 5