代码拉取完成,页面将自动刷新
# -*- coding: utf-8 -*-
# @Time : 2018/3/28 20:37
# @Author : Lv Zhangrun
# @Site :
# @File : MidToAfter.py
# @Software: PyCharm
import Stack
class MidToAfter:
def __init__(self):
self.listOperators = ["+", "-", "×", "÷", "(", ")", "="]
self.dictOperators = {"+": 0, "-": 0, "×": 1, "÷": 1}
def toAfterExpression(self, expression):
stackOperator = Stack.Stack()
afterExpression = []
listTemp = []
expression = expression + "="
for element in expression:
if element not in self.listOperators:
listTemp.append(element)
elif element == "=":
if len(listTemp)!=0:
strTemp=""
for i in range(0, len(listTemp)):
strTemp=strTemp+listTemp.pop(0)
afterExpression.append(strTemp)
else:
if len(listTemp)!=0:
strTemp=""
for i in range(0, len(listTemp)):
strTemp=strTemp+listTemp.pop(0)
afterExpression.append(strTemp)
if stackOperator.isEmpty() or element == "(":
stackOperator.push(element)
elif element != "(" and element != ")":
if stackOperator.peek() != "(" and self.dictOperators[element] > self.dictOperators[
stackOperator.peek()]:
stackOperator.push(element)
else:
while True:
if stackOperator.peek() == "(":
stackOperator.push(element)
break
elif self.dictOperators[element] < self.dictOperators[stackOperator.peek()]:
while not stackOperator.isEmpty() and True:
strOperator = stackOperator.peek()
if strOperator == "(" or self.dictOperators[strOperator] < self.dictOperators[
element]:
break
else:
stackOperator.pop()
afterExpression.append(strOperator)
else:
afterExpression.append(stackOperator.pop())
if stackOperator.isEmpty():
stackOperator.push(element)
break
elif element == ")":
while True:
if stackOperator.peek() != "(":
afterExpression.append(stackOperator.pop())
else:
stackOperator.pop()
break
else:
stackOperator.push(element)
if not stackOperator.isEmpty():
while not stackOperator.isEmpty():
afterExpression.append(stackOperator.pop())
return afterExpression
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。