后缀表达式求值问题:,现在小编就来说说关于python操作方法大全?下面内容希望能帮助到你,我们来一起看看吧!

python操作方法大全(Python算法数据结构4)

python操作方法大全

后缀表达式求值问题:

1)创建空栈operandStack用于暂存操作数;

2)将后缀表达式用split方法解析为单词(token)的列表;

3)从左到右扫描单词列表,如果一个单词是操作数,将单词转换为整数int,压入operandStack栈顶;如果单词是一个操作符(*/ -),就是开始求值,从栈顶弹出2个操作数,先弹出的是右操作数,后弹出的是左操作数,计算后将值重新压入栈顶;

4)单词扫描结束后,计算后将值重新压入栈顶;

5)弹出栈顶的值,返回;

class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self,item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items)-1] def size(self): return len(self.items) def postfixEval(postfixExpr): operandStack =Stack() tokenList = postfixExpr.split() for token in tokenList: if token in tokenList: if token in '012345678': 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 postfixExpr = '4 5 6 * ' print(postfixEval(postfixExpr))

,