结对项目:用Python实现自动生成小学四则运算题目的程序

发布时间 2023-09-28 22:19:04作者: howdx

Python实现四则运算程序

软件工程 计科21级1.2班
作业要求 https://edu.cnblogs.com/campus/gdgy/CSGrade21-12/homework/13016
作业目标 完成结对项目:四则运算 ; 熟悉团队协作的方法和模式

github链接:https://github.com/howdnb/howdnb

项目成员信息

姓名 学号
刘升嘉 3121004833
谭艺豪 3121004837

PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 45 60
· Estimate · 估计这个任务需要多少时间 1385 1620
Development 开发 240 210
· Analysis · 需求分析 (包括学习新技术) 400 300
· Design Spec · 生成设计文档 30 50
· Design Review · 设计复审 15 10
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 10
· Design · 具体设计 200 300
· Coding · 具体编码 300 500
· Code Review · 代码复审 20 10
· Test · 测试(自我测试,修改代码,提交修改) 30 100
Reporting 报告 30 20
· Test Repor · 测试报告 40 10
· Size Measurement · 计算工作量 10 30
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 5 10
Total 总计 1385 1620

程序实现

一.具体设计

  • 程序流程图
    -总体可分为三个功能:生成题目、计算结果、文件读写

  • 生成题目:
    (1)随机生成题目,包括运算符、数字等
    (2)随机生成括号插入题目中
    (3)检查重复题目,将其去除

  • 计算结果:
    (1)将中缀表达式转为后缀表达式
    (2)使用后缀表达式进行计算,同时过滤掉不符合要求的题目

  • 文件读写:
    (1)将用户输入结果写入文件
    (2)将题目与计算结果写入文件
    (3)读出用户输入结果与计算结果并进行比对,将比对结果写入至文件

代码说明

  • 使用此函数随机生成算式中数字与符号,包括整数与分数(处理为真分数)

  • 随机生成括号插入

  • 检查重复算式

  • 使用此函数将中缀表达式转换为后缀表达式,提高计算效率

  • 通过分割flag将带分数转换为假分数,并使用Fraction库使得分数间可直接进行计算

  • 使用re库结合正则表达式将答案从文件中提取出来,并将两者进行比对,得出结果

二.性能分析

  • 通过观察主函数各行代码热力值可发现,函数calculate()所占时间最多

  • 观察calculate()函数各行代码热力值可发现,主要是在输入答案时耗时较多,并不影响程序进程

  • 代码检查

  • 通过pycharm自带工具进行检查发现,程序仅存在拼写问题,对程序运行并无影响

  • 代码覆盖率

  • 使用coverage库生成coverage report,未覆盖的为条件判断

三.测试运行

  • 命令行中运行程序

  • 结果输入至文件中

异常处理

  • 传入题目为空

  • 输入参数错误

项目总结

通过紧密合作,我们两人完成了此次结对项目

  • 项目分工

    • 刘升嘉:编写题目生成以及题目查重部份的程序
    • 谭艺豪:编写题目计算以及答案对比部份的程序
  • 项目收获

    • 更加清楚地认识到了团队协作的具体过程
    • 明白了在完成团队项目时,要积极沟通,了解对方进度,共同讨论该如何实现整个程序
    • 在个人编写遇到问题时,可以询问对方建议,合作完成整个项目