Ai
1 Star 0 Fork 0

lvzr/Four_Arithmetic_Operations for python

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
MidToAfter.py 3.12 KB
一键复制 编辑 原始数据 按行查看 历史
lvzr 提交于 2018-03-31 11:14 +08:00 . push project
# -*- 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
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/lzrun/Four_Arithmetic_Operations-for-python.git
git@gitee.com:lzrun/Four_Arithmetic_Operations-for-python.git
lzrun
Four_Arithmetic_Operations-for-python
Four_Arithmetic_Operations for python
master

搜索帮助