Python3 - 为什么从dict调用运算符不起作用

时间:2017-11-13 22:42:33

标签: python python-3.x dictionary

所以我有这些代码:

def evaluate(expression):
    if any(not (c.isdigit() or c.isspace() or c in '(){}[]+-*/') for c in expression):
        return
    newexp = expression.split()
    stack = Stack()
    for i in newexp:
        if i in ')]}':
            arg2 = stack.pop()
            operator = stack.pop()
            arg1 = stack.pop()
            if stack.pop() not in '([{':
                return
            stack.push({'+': add}[operator](arg1,arg2))
        else:
            stack.push(i)    

    #checking
    while not stack.is_empty():
        print(stack.pop())

n = input('Input expression: ')
evaluate(n)

如果我使用

  

'(5 + 2)'

作为输入,输出将是

  

52

我应该得到

  

7

作为答案。

执行此操作将获得7

print({'+': add}['+'](5,2))

但它实际上是不一样的?你能告诉我我的代码的哪一部分是错的。

感谢。

1 个答案:

答案 0 :(得分:0)

进行此更改 stack.push({'+': add}[operator](int(arg1),int(arg2)))