结对项目——小学四则运算题目自动生成器

news/2024/11/17 9:12:53/文章来源:https://www.cnblogs.com/lsr0930/p/18436885
这个作业属于哪个课程 <计科22级34班>
这个作业要求在哪里 <结对项目>
这个作业的目标 <实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)>
团队成员 <杨富国(3122004587)、李思柔(3222004638)>
Github项目地址 https://github.com/wWchao-111/Myapp

一、PSP表

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 90 90
· Estimate · 估计这个任务需要多少时间 45 60
Development 开发 120 150
· Analysis · 需求分析 (包括学习新技术) 60 60
· Design Spec · 生成设计文档 60 60
· Design Review · 设计复审 60 60
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 60 60
· Design · 具体设计 60 60
· Coding · 具体编码 30 30
· Code Review · 代码复审 30 30
· Test · 测试(自我测试,修改代码,提交修改) 180 150
Reporting 报告 60 60
· Test Repor · 测试报告 60 60
· Size Measurement · 计算工作量 10 10
· Postmorte· 合计m & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 30
· 合计 955 970

二、设计实现过程

共7个模块:

main():用于命令行输入输出的对接,包含整体运行逻辑、表达式的写入写出和答案比对。
random_fraction():随机生成一个数,可能是分数也可能是整数。
random_expression():生成全部表达式。
is_valid():判断生成的表达式是否合理。
genetate_expressions():生成最终的总表达式。
evaluate():计算表达式的值。
grade():比对题目和答案是否正确。

流程图:

image

三、代码说明:

1.核心代码:

image

2.分析:

生成随机数random_fraction():

定义一个函数random_fraction(max_denominator),用于生成一个随机数。
此函数接收一个最大分母值 max_denominator,生成一个随机分数。分子的范围从 0 到 max_denominator - 1,而分母则从 1 到 max_denominator(避免分母为零)。
函数内部使用random.randint()生成两个随机整数作为分子和分母,然后使用fractions.Fraction()创建一个分数对象并返回。

生成表达式random_expression():

定义一个函数random_expression(max_denominator, max_operators),用于生成一个随机的数学表达式。
此函数接收两个参数:max_denominator表示分母的最大值,max_operators表示操作符的最大数量。
函数首先生成一个随机分数作为表达式的第一个元素,然后在循环中随机选择操作符(加、减或乘)并生成另一个随机分数,将它们添加到表达式中,最后返回生成的表达式字符串。(操作符的数量在 1 到 max_operators之间随机决定)

检查表达式合法性is_valid():

定义一个函数is_valid(expression),用于检查表达式是否合法。
这个函数接受一个表达式字符串作为参数,将其分割成各个部分,然后检查每个操作符前后的分数是否符合四则运算的规则。例如,如果操作符是-,那么应确保被减数不小于减数;如果操作符是/,那么应确保除数不为零。如果所有操作符都符合规则,则返回True,否则返回False。

四、测试运行

测试模块代码:

image

五、运行结果

image

image
Exercises.txt(题目数量:10,范围:10)是题目。
Answers.txt是答案。
Grade.txt是结果。

用生成的题目文件和答案文件做比对测试:

交换第3题和第4题的答案后,grade输出第3、4题错误,其余正确:
image

六、效能分析

image

由此可以看出:生成随机数random_fraction是最耗时的。

七、项目小结

杨富国:

经过这次项目,我深刻了解到一个设计文档的重要性,当对项目进行分析设计模块的大体框架后,代码实现的进度就快了许多,剩下的更多是模块功能的微调与测试。
第一次的结对项目更让我感受到了团队合作中分工与沟通的重要性,明确的分工让我们可以节省很多时间,也让我们感受到了团队合作中交流的重要性

李思柔:

这是我第一次与人合作完成一个项目,刚开始又有点不适应,但在一次次磨合中我们还是完成了这次结对项目,我意识到在团队工作中共同协作和沟通的重要性,也发现两个人想问题和做决策比一个人的效率要快得多。感谢我的搭档!是他帮助了我很多才完成这次结对项目,本人在此郑重鸣谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/805184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XSS攻击和CSRF攻击

一、XSS XSS,即跨站脚本攻击。是值攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。 比如在论坛上或者输入框内输入 "<alert>document.cookie</alert&…

解决win10无法用独显玩游戏的问题

首先要下载独显驱动。 https://www.nvidia.cn/Download/index.aspx?lang=cn 这时任务管理器里就可以看到独显占用率了。 然后桌面右键打开nvidia控制面板,把要使用独显的游戏设置为使用独显(如果默认不使用独显的话)如果还不行,可能是还需要装上CPU的核显驱动(很奇怪吧?…

day8[OpenCompass 评测 InternLM-1.8B 实践]

环境配置 创建开发机和 conda 环境数据准备 评测数据集启动评测 (10% A100 8GB 资源) 使用命令行配置参数法进行评测评测完成后,将会看到:

sha256sum文件哈希值和直接哈希字符串的哈希值不一样

例如在文件test.txt里写入 test没有换行。 然后 sha256sum test.txt出来的结果是 f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2 test.txt但是在这个网站上 http://encode.chahuo.com/ 输入test,然后以sha256方式哈希得到的结果是 9f86d081884c7d659a2f…

F-Droid使用教程

F-Droid下载地址:https://f-droid.org/ 默认的官方源太慢了。建议更换清华源。官方教程:https://mirrors.tuna.tsinghua.edu.cn/help/fdroid/ 先打开F-Droid,进入设置->存储库点进F-Droid存储库,可能会看到一些官方镜像:如果啥也没有,可能等一段时间就会出现。 把这些…

WPF 的Image 控件 设置 Image.Source 的数据源,可能存在跨线程调用的问题。

相信很多WPF 的开发,应该都很多用到 Image 这个控件来显示图片。这个图片的来源可以来自各种各样的方式获取到。 我们的组内白板、批注的扫码的功能也用到这个去生成二维码,生成后,二维码显示不出来,由于触发到了全局捕获,界面又没有崩溃,遇到了好几个坑,记录一下。 开始…

7-访问控制技术原理与应用

7.1 访问控制概述 1)概念 访问控制是指对资源对象的访问者授权、控制的方法及运行机制。 访问者又称为主体,可以是用户、进程、应用程序等; 资源对象又称为客体,即被访问的对象,可以是文件、应用服务、数据等; 授权是访问者可以对资源对象进行访问的方式,如文件的读、写、…

【赵渝强老师】基于大数据组件的平台架构

在了解了大数据各个生态圈所包含的组件及其功能特性后,就可以利用这些组件来搭建一个大数据平台从而实现数据的存储和数据的计算。下图展示了大数据平台的整体架构。视频讲解如下:大数据平台的Lambda架构大数据平台的Kappa架构大数据平台的总体架构可以分为五层,分别是:数据…

ctfshow-web-信息搜集(11-17)

web11 题目提示:域名其实也可以隐藏信息,比如ctfshow.com就隐藏了一条信息。 原理:通过Dns检查查询Flag。这里可以用阿里云的网站: Dns查询网站:阿里云网站运维检测平台 (aliyun.com)web12 题目提示:有时候网站上的公开信息,就是管理员常用密码 原理:查看robots.txt文件…

设备管理平台-支持快速开发

技术路线(同时支持前后端分离 / 前后端一体,可用于网关或者服务器部署) 前端:layui-v2.9.17 后端:Net8.0 使用组件 Swagger、Jwt、Freesql、MiniExcel、MemoryCache(存储登录用户信息,代替HttpContext.Session,也可使用Redis)系统架构 非市面上繁杂的架构(Model、Ser…

几款文本编辑器横向比较

文本编辑器 大文件编辑器 程序员编辑器几款文本编辑器横向比较 关键字: 大文件、编辑器 ‍ 编辑器功能及性能比较免责声明以下列选编辑器,仅限于本人日常接触的产品,带有强烈的个人主观和随机性,未列选产品并不代表不能满足功能需求。 测试数据(特别是时间),受限于观察条…

设备云平台

技术路线(同时支持前后端分离 / 前后端一体,可用于网关或者服务器部署) 前端:layui-v2.9.17 后端:Net8.0 使用组件 Swagger、Jwt、Freesql、MiniExcel、MemoryCache(存储登录用户信息,代替HttpContext.Session,也可使用Redis)系统架构 非市面上繁杂的架构(Model、Ser…