https://gitee.com/szh123/four_arithmetic_implementation.git

1.需求分析:

实现四则运算题目及答案生成,控制生成题目的个数,题目中数值不超过10且有分数存在并用真分数表示。

可以生成10000道题

运算符不超过3个

题目不能出现重复即不能经过有限次交换成为相同题目

可以提供对给出的题目进行查重及答案求解并输出结果

2.功能设计:

(1)基础功能:实现四则运算题目和答案的生成,对生成的四则运算题目进行查重,支持对提供的题目进行查重和答案求解并给出正确错误及题目重复的结果

(2)扩展功能:

(3)高级功能:

3.设计实现:

类1:生成随机数

类2:生成整个表达式

类3:表达式转换成为逆波兰式

类4:树

类5:类中存放一个数的分子与分母,同时toString方法输出真分数形式

类6:计算结果

类7:二叉树的查重

类8:主函数

4.代码说明:

生成表达式

def createarithmetic(self):

list = []

f1 = function1.function1()

f2 = function2()

operator_no = random.randint(1,3)

if operator_no == 1:

list.append(f1.createNum())

list.append(f2.createOperator())

list.append(f1.createNum())

elif operator_no == 2:

start = random.randint(0,2)

end = 0

if start == 0:

end == 0

else:

end = start +1

for i in range(1,4):

if i == start:

list.append("(")

list.append(f1.createNum())

if i == end:

list.append(")")

list.append(f2.createOperator())

list.pop()

elif operator_no == 3:

start = random.randint(0, 3)

end = 0

if start == 0:

end == 0

else:

end = start + 1 + random.randint(0,1)

if end >= 4:

end=4

for i in range(1, 5):

if i == start:

list.append("(")

list.append(f1.createNum())

if i == end:

list.append(")")

list.append(f2.createOperator())

list.pop()

else:

list.append(f1.createNum())

list.append(f2.createOperator())

list.append(f1.createNum())

return list

逆波兰式生成

def toRPN(self,list):

right = []

aStack = []

position = 0

while True:

if self.isOperator(list[position]):

if list ==[] or list[position] == "(" :

aStack.append(list[position])

else:

if list[position] == ")":

while True:

if aStack != [] and aStack[-1] !="(" :

operator = aStack.pop()

right.append(operator)

else :

if aStack !=[]:

aStack.pop()

break

else:

while True:

if aStack != [] and self.priority(list[position],aStack[-1]):

operator = aStack.pop()

if operator != "(":

right.append(operator)

else:

break

aStack.append(list[position])

else:

right.append(list[position])

position = position +1

if position >= len(list):

break

while aStack != []:

operator = aStack.pop()

if operator != "(":

right.append(operator)

return right

5.测试运行:

主界面

选择功能1:

题目

答案

选择功能2:

6.PSP

7.小结:

逆波兰式的生成和计算,二叉树的查重非常方便

python编写四则运算_python实现四则运算相关推荐

  1. python编写异常处理_Python 简明教程 --- 23,Python 异常处理

    要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语法错误和一些其它的运行时错误等. 逻辑错误: 这种错误不会导致程序崩溃,它不容易被发现,只有在执行结 ...

  2. python编写图像识别_python实现识别相似图片小结

    文章简介 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能 ...

  3. python编写递归函数_Python递归函数如何写?正确的Python递归函数用法!

    在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 一.举个例子,我们来计算阶乘n! = 1 x 2 x 3 x - x n,用函数fact(n)表示,可以看出: f ...

  4. python编写函数_python函数式编程

    函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是"怎么干",而函数函数式编程的思考方式是我要"干什么". 至于函数式编程的特点 ...

  5. python编写赛车_python udp 协议发送接收秒速赛车平台搭建数据

    python udp 协议发送接收秒速赛车平台搭建数据 Socket socket 简称套接字, 秒速赛车平台搭建 [企鹅 217-1793-408] 是进程间通信的一种方式. 与其他的方式的进程间的 ...

  6. 用python编写名片_python实现简单名片管理系统

    前言 之前看过一遍的python教程,真的是自己看过一遍,python的程序能看懂,但是很难去实现.比较困难的自己实现一些代码,找工作原因,自己又认认真真的看书,敲代码,后来看到了这个题目,想把之前学 ...

  7. 用python编写累加_python中累加怎么做

    Python中累加可以使用函数sum()来实现, 例: numpy.sum(A)---数组内所有元素之和,A---数组import numpy as np a = np.array([[1,3,6], ...

  8. python编写存储过程_python call 存储过程

    业界 | Dropbox力荐!我们如何应对Python桌面应用程序的崩溃 维护像Dropbox这样的复杂桌面应用程序最大挑战之一就是同时处理数亿次的安装,一个小小的错误就会影响到大量的用户. 这些错误 ...

  9. python编写篮球_Python编程2——Python实现计算篮球比赛是否领先安全的程序

    前言 这个程序的算法部分是Bill James 博士的'Safe lead calculator' 网址:http://www.slate.com/articles/sports/sports_nut ...

最新文章

  1. INT_PTR 更好的移植性
  2. Java实战应用50篇(一)-Java并发编程:volatile关键字解析
  3. KMP算法 hdu 1711 hdu 2203
  4. api数据加密的定义_API 设计基础规范
  5. DSPBuilder笔记
  6. 【翻译】ANDROID KTX – 使用Kotlin进行Android开发
  7. 教你实现图片的惰性加载
  8. vc链接数据库和操作数据库的函数清单
  9. EMC测试项目与整改案例
  10. 情绪管理训练APP的产品概念分析
  11. 视频怎么加水印?这里有你想要的答案
  12. html中的圆圈链接,html – 如何在svg圈内添加链接
  13. 克服弱点,愈发完美-自我篇——《人性的弱点》读后感
  14. 电子木鱼 微信小程序源码 今天你积功德了吗?
  15. 基于最小二乘法的图像边界曲线拟合(matlab平台)
  16. 判断通过微信、支付宝扫一扫进入的页面
  17. Oracle日期函数months_between的用法
  18. Python-Opencv中高斯噪点和高斯模糊
  19. Kali Linux Web渗透测试手册(第二版) - 1.3 - 靶机的安装
  20. 【办公类-16-06】“2022下学期 总园活动室(沙水+建构)排班表”(python 排班表系列)

热门文章

  1. HRBU 2021暑期训练解题报告阶段二Day1
  2. oracle 导入1t dmp文件,利用FDW进行ORACLE到Postgresql的数据迁移
  3. P1658 购物(贪心算法)
  4. 重磅!Google学术发布2019年最有影响力的7篇论文!
  5. Persist Security Info = true | false作用
  6. java毕业设计家庭理财管理系统mybatis+源码+调试部署+系统+数据库+lw
  7. LJ5.1 - 水下可见光通信UVLC研究进展
  8. 2015年c语言等级考试题1 10 2分,全国计算机等级考试二级c语言真题题库1+2015年9月.docx...
  9. 反驳生命的起点是rna_生命起源学说或将被改写?“天外来客”陨石给科学家带来新发现!...
  10. 台达plc接线图实物_西门子plc接线图实物图