Ai
1 Star 0 Fork 0

lvzr/Four_Arithmetic_Operations for python

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CheckDuplicate.py 4.56 KB
一键复制 编辑 原始数据 按行查看 历史
lvzr 提交于 2018-03-31 11:14 +08:00 . push project
# -*- coding: utf-8 -*-
# @Time : 2018/3/30 12:39
# @Author : Lv Zhangrun
# @Site :
# @File : CheckDuplicate.py
# @Software: PyCharm
import Stack
import Tree
class CheckDuplicate:
def __init__(self):
self.listOperators = ["+", "-", "×", "÷"]
self.dictOperators = {"+": 0, "-": 0, "×": 1, "÷": 1}
self.listPostOrder=[]
self.strPostOrder=""
def mixed_number(self, value):
list1 = value.split("’") # list1[0]为整数部分,list1[1]为分数部分
list2 = list1.pop().split("/") # list2[0]为分子,list2[1]为分母
return (int(list1[0]) * int(list2[1]) + int(list2[0])) / int(list2[1])
def proper_fraction(self, value):
list1 = value.split("/")
return int(list1[0]) / int(list1[1])
def getValue(self, value):
if "’" in value:
return self.mixed_number(value)
elif "/" in value:
return self.proper_fraction(value)
else:
return int(value)
def treeAndTree(self,value1, value2):
root1 = self.dictOperators[value1.root.data]
root2 = self.dictOperators[value2.root.data]
temp = []
if root1 >= root2:
temp.append(value1)
temp.append(value2)
elif root1 < root2:
temp.append(value2)
temp.append(value1)
return temp
def treeAndValue(self,value1, value2):
type1 = type(value1)
type2 = type(value2)
temp = []
if type1 == Tree.Tree:
temp.append(value1)
temp.append(value2)
else:
temp.append(value2)
temp.append(value1)
return temp
def valueAndValue(self,value1, value2):
temp = []
v1 = int(self.getValue(value1))
v2 = int(self.getValue(value2))
if v1 >= v2:
temp.append(value1)
temp.append(value2)
else:
temp.append(value2)
temp.append(value1)
return temp
def createTree(self,afterExpression):
stack = Stack.Stack()
for i in afterExpression:
if i in self.listOperators:
if stack.isEmpty() or stack.size() < 2:
print("后缀表达式不正确")
return
value1 = stack.pop()
value2 = stack.pop()
type1 = type(value1)
type2 = type(value2)
v1 = None
v2 = None
if type1 == str and type2 == str:
temp = self.valueAndValue(value1, value2)
v1 = temp[0]
v2 = temp[1]
elif (type1 == str and type2 == Tree.Tree) or (type1 == Tree.Tree and type2 == str):
temp = self.treeAndValue(value1, value2)
v1 = temp[0]
v2 = temp[1]
elif type1 == Tree.Tree and type2 == Tree.Tree:
temp = self.treeAndTree(value1, value2)
v1 = temp[0]
v2 = temp[1]
leftTree = Tree.Tree(v1, None, None)
rightTree = Tree.Tree(v2, None, None)
tree = Tree.Tree(i, leftTree, rightTree)
stack.push(tree)
else:
stack.push(i)
return stack
# 递归实现后序遍历
def postOrder_list(self,TreeNode):
if TreeNode:
# print(type(root.left))
self.postOrder_list(TreeNode.left)
self.postOrder_list(TreeNode.right)
if type(TreeNode.data) == Tree.Tree:
self.listPostOrder.append(TreeNode.data.left.data)
self.listPostOrder.append(TreeNode.data.right.data)
self.listPostOrder.append(TreeNode.data.data)
else:
self.listPostOrder.append(TreeNode.data)
return self.listPostOrder
def postOrder_str(self,TreeNode):
if TreeNode:
# print(type(root.left))
self.postOrder_str(TreeNode.left)
self.postOrder_str(TreeNode.right)
if type(TreeNode.data) == Tree.Tree:
self.strPostOrder=self.strPostOrder+TreeNode.data.left.data
self.strPostOrder = self.strPostOrder +TreeNode.data.right.data
self.strPostOrder = self.strPostOrder +TreeNode.data.data
else:
self.strPostOrder = self.strPostOrder +TreeNode.data
return self.strPostOrder
def isDuplicate(self,str1,str2):
if str1==str2:
print("重复!")
else:
print("不重复!")
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

搜索帮助