基于Python自动生成小学四则运算题目的命令行程序
目录
Part one 作业地址、Github链接与成员情况
这个作业属于哪个课程 | 软件工程 |
---|---|
作业要求 | 结对编程 |
作业目标 | 熟悉结对编程的流程和工作方式,实现一个自动生成小学四则运算题目的命令行程序 |
GitHub链接 | GitHub地址 |
成员情况 | 3118005392 张天 3118005401 曾广宁 |
Part two PSP表格
*PSP2.1* | *Personal Software Process Stages* | *预估耗时(分钟)* | *实际耗时(分钟)* |
---|---|---|---|
Planning | 计划 | 40 | 40 |
· Estimate | · 估计这个任务需要多少时间 | 40 | 40 |
Development | 开发 | 660 | 800 |
· Analysis | · 需求分析 (包括学习新技术) | 150 | 200 |
· Design Spec | · 生成设计文档 | 50 | 50 |
· Design Review | · 设计复审 (和同事审核设计文档) | 40 | 50 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 100 | 150 |
· Design | · 具体设计 | 50 | 60 |
· Coding | · 具体编码 | 210 | 200 |
· Code Review | · 代码复审 | 30 | 40 |
· Test | · 测试(自我测试,修改代码,提交修改) | 30 | 50 |
Reporting | 报告 | 90 | 120 |
· Test Report | · 测试报告 | 30 | 40 |
· Size Measurement | · 计算工作量 | 30 | 40 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 40 |
合计 | 790 | 960 |
Part three 计算模块接口的设计与实现过程
整体程序流程图
算法思想介绍
1.Calculate:用于实现加减乘除运算,以及数字大小的比较
2.Dofrac:用于检查答案,随机创建分数,求最大公约数,生成算式并求得计算结果
3.Fraction:用于生成分数与分数化简,转化为近似的分数,判断结果是否为带分数,不是带分数则化为带分数
4.Generator:主类,生成主界面
Part four 效能分析与代码优化
效能分析
时间分配分析:由于上述代码中调用库函数较多,所以在输出以及运算输入的时候花费的时间较长。
效能分析:由上图可以得知,因为调用库函数较多,算法运行的比较慢,导致结果计算时间过长。
代码优化
由上述的效能分析图可以得知,代码调用库函数较多导致运行的速度过慢,主要在于三个方面:random生成随机数,运算符号的生成,以及运算结果的生成,因此我们查询资料,可以利用二叉树进行优化,以下是我们的优化代码:
括号运算优化
添加括号进行运算时,需要考虑到里面的算式是否会重复,具体代码实现如下:
Part five 实现过程&关键代码
关键函数
清空上一次的数据
生成算式
写入题目到txt文档中
写入答案到txt文档中
Part six 测试运行
测试一分析
写入测试的题目以及最大数值
测试题目的结果以及错误题目分析
测试二分析
写入测试的题目以及最大数值
测试题目的结果以及错误题目分析
Part seven 项目小结
两个人在一起探讨比一个人独自研究要快很多,效率会提高很多,有时候一个人自己看不到的问题,另一个人可以比较清晰地看出来并及时地提醒指出,有什么不懂的地方就可以找百度和书本。两个人从没有头绪开始,慢慢地找到了解决问题的正确方向,这个看起来很简单的项目,对于首次尝试结对编程的我们来说,是个不小的挑战,这也证明了我们的水平还有待提高。
Part eight 参考文献
1.二叉树计算四则运算表达式 https://blog.csdn.net/benweizhu/article/details/7730473
2.Python 简单实现数学四则运算 https://blog.csdn.net/sinat_38682860/article/details/98105092
3.python 根据运算符实现四则运算 https://blog.csdn.net/zachzhan_g/article/details/81784827