Ai
1 Star 0 Fork 0

lvzr/Four_Arithmetic_Operations for python

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
test.py 3.64 KB
一键复制 编辑 原始数据 按行查看 历史
lvzr 提交于 2018-03-31 11:14 +08:00 . push project
# -*- coding: utf-8 -*-
# @Time : 2018/3/26 20:37
# @Author : Lv Zhangrun
# @Site :
# @File : test.py
# @Software: PyCharm
import Calculate
import MidToAfter
import Tree
import Stack
def mixed_number(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(value):
list1 = value.split("/")
return int(list1[0]) / int(list1[1])
def getValue(value):
if "’" in value:
return mixed_number(value)
elif "/" in value:
return proper_fraction(value)
else:
return int(value)
def treeAndTree(value1, value2):
root1 = dictOperators[value1.root.data]
root2 = 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(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(value1, value2):
temp = []
v1 = int(getValue(value1))
v2 = int(getValue(value2))
if v1 >= v2:
temp.append(value1)
temp.append(value2)
else:
temp.append(value2)
temp.append(value1)
return temp
def createTree(afterExpression):
stack = Stack.Stack()
for i in afterExpression:
if i in 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 = valueAndValue(value1, value2)
v1 = temp[0]
v2 = temp[1]
elif (type1 == str and type2 == Tree.Tree) or (type1 == Tree.Tree and type2 == str):
temp = treeAndValue(value1, value2)
v1 = temp[0]
v2 = temp[1]
elif type1 == Tree.Tree and type2 == Tree.Tree:
temp = 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(TreeNode):
if TreeNode:
# print(type(root.left))
postOrder(TreeNode.left)
postOrder(TreeNode.right)
# data=Tree.data
if type(TreeNode.data) == Tree.Tree:
print(TreeNode.data.left.data)
print(TreeNode.data.right.data)
print(TreeNode.data.data)
return
print(TreeNode.data)
print()
test = Calculate.Calculator()
print(test.calculate("9/40-7/10"))
# a = 1
# list = [a]
# print(list)
listOperators = ["+", "-", "×", "÷"]
dictOperators = {"+": 0, "-": 0, "×": 1, "÷": 1}
#
# testList1 = MidToAfter.MidToAfter().toAfterExpression("3+(2+1)")
# print(testList1)
# teststack1 = createTree(testList1)
# postOrder(teststack1.pop())
#
# print("#######################")
#
# testList2 = MidToAfter.MidToAfter().toAfterExpression("1+2+3")
# print(testList2)
# teststack2 = createTree(testList2)
# postOrder(teststack2.pop())
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

搜索帮助