【发布时间】:2016-05-27 00:33:18
【问题描述】:
我正在从 interactivepython.org 学习 Python。在这个site 上,他们有评估后缀表达式的代码。但我也想看看如何为前缀表达式完成它。代码如下:
def postfixEval(postfixExpr):
operandStack = Stack()
tokenList = postfixExpr.split()
for token in tokenList:
if token in "0123456789":
operandStack.push(int(token))
else:
operand2 = operandStack.pop()
operand1 = operandStack.pop()
result = doMath(token,operand1,operand2)
operandStack.push(result)
return operandStack.pop()
def doMath(op, op1, op2):
if op == "*":
return op1 * op2
elif op == "/":
return op1 / op2
elif op == "+":
return op1 + op2
else:
return op1 - op2
print(postfixEval('7 8 + 3 2 + /'))
如果我正确理解了这节课,我会改变操作数的顺序吗?
【问题讨论】:
-
旁注:
doMath可以通过创建dict映射到operator模块提供的各种函数来简化为dict查找。
标签: python stack postfix-notation prefix-operator