我必须在十进制数之间执行某个算术运算。操作可以添加'减去'或者'乘以',所需的操作将与数字一起传递给我们的函数。 我想这样做的方式是我想存储操作的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
然后使用哈希中的导入值代替,但对于这个问题,我有兴趣找出它是否可能按照我在原始问题中提出的方式进行。谢谢!
答案 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