名称:Python后缀表达式求值
当前代码
#!/use/bin/env python
# _*_ coding:utf-8 _*_
#http://python.jobbole.com/87581/
operators = { # 运算符操作表
'+': lambda op1, op2: op1 + op2,
'-': lambda op1, op2: op1 - op2,
'*': lambda op1, op2: op1 * op2,
'/': lambda op1, op2: op1 / op2,
}
def evalPostfix(e):
"""
:param e: 后缀表达式
:return: 正常情况下栈内的第一个元素就是计算好之后的值
"""
tokens = e.split() # 把传过来的后缀表达式切分成列表
stack = []
for token in tokens: # 迭代列表中的元素
if token.isdigit(): # 如果当前元素是数字
stack.append(int(token)) # 就追加到栈里边
elif token in operators.keys(): # 如果当前元素是操作符
f = operators[token] # 获取运算符操作表中对应的lambda表达式
op2 = stack.pop() # 根据先进后出的原则,先让第二个元素出栈
op1 = stack.pop() # 在让第一个元素出栈
stack.append(f(op1, op2)) # 把计算的结果在放入到栈内
return stack.pop() # 返回栈内的第一个元素
result = evalPostfix('2 3 4 * +')
print(result)
# 14