所以我有这些代码:
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))
但它实际上是不一样的?你能告诉我我的代码的哪一部分是错的。
感谢。
答案 0 :(得分:0)
进行此更改
stack.push({'+': add}[operator](int(arg1),int(arg2)))