python操作方法大全(Python算法数据结构4)
后缀表达式求值问题:,现在小编就来说说关于python操作方法大全?下面内容希望能帮助到你,我们来一起看看吧!
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))
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com