四则运算---py实现

四则运算-二叉树


题目链接跳转:四则要求 源码已经上传至码云:四则运算 ## 需求分析: ##
	1.实现带有自然数,真分数,假分数,少于3个运算符的四则等式
	2.实现查重,运算
	3.拥有万级别的出解题能力
###功能设计:### 1.表达式中缀转后缀 2.随机数字生成(包括真假分数) 3.假分数转统一分数形式 4.建树(顺便求解 按规则建树保证唯一) 5.随便一种树的遍历方式 6.表达式创建 ## 程序设计 ## 实现一个Tool工具类,一个节点类,一个等式类(实际上没什么卵用) ### 功能1:中缀转后缀 #### def nibolan(self,source):#参数为字符串表达式 ###功能2:操作数生成### def MyRandomData(self,begin=0):#随机操作数 默认从0随机 ###功能3:真假转化### def ToBeFraction(self,a):#转化为分数形式 ###功能4:建树并求解 (查重关键点)### def createTree(self,source):#参数为后缀表达式字符串 ###功能5:遍历### def heng(self,a,b):#a为root b为容器 ###功能6:表达式建立### def create(self): ## 代码说明: ## 查重思路 ![](https://gitee.com/NewBeeFly/task/raw/f32fdd499aad3ebeeef6c6a30a56195e85ae58ec/pic/1-1.png)
关键在于如何建立一颗 相同即唯一的树 按照上面当 ‘*+‘时才可能出现交换律等价的情况 所以采用上图的规则可解决这一问题。最后在创建
表达式的时候,遍历树并将节点记录下来,记录下来的字符串作为查重唯一码,若此码出现过则重新创建表达式(解释下为什么可以用遍历的
字符串来断定是否相同 虽然2种遍历才能唯一确定一颗树 相同遍历不一定相同字符串,但是如果表达式相同他必定有相同的遍历字符串 ,
也就是说他是一个子集的概念 大不了多做几次创建)


源码已经上传至码云:四则运算

运行测试:

开始###

题目:###

答案:###

得分:###


心得:##

	多方式实现,多思考,多交流
posted @ 2018-03-30 10:30  这同学很皮  阅读(367)  评论(0编辑  收藏  举报