首页 > 其他分享 >结对项目

结对项目

时间:2024-09-28 21:01:19浏览次数:1  
标签:10 结对 题目 项目 真分数 生成 随机 表达式

这个作业属于哪个课程 计科2班
这个作业要求在哪里 作业要求
这个作业的目标 < 要求实现一个自动生成小学四则运算题目的命令行程序 >

[作业地址] (https://github.com/cr1017/3122004813)

一、时间预估及实际花费时间PSP表格

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

二、项目分析与设计

设计思路

参数解析:使用argparse库解析命令行参数。
题目生成:随机生成四则运算题目。
题目存储:将题目和答案存储到文本文件中。
题目校验:检查生成的题目是否符合要求。

2. 实现步骤

生成自然数和真分数:随机生成自然数和真分数。
生成表达式:根据四则运算规则生成表达式。
确保表达式合法:确保生成的表达式不会产生负数或非法的真分数。
避免重复:确保生成的题目不重复。
存储题目和答案:将题目和答案存储到文本文件中。

示例代码

以下是一个简单的Python脚本,实现了上述功能:

三、代码说明


四、测试运行


五、功能

  1. 参数解析 (parse_arguments)
    使用argparse库来解析命令行参数:
    -n, --number: 指定生成题目的数量,默认为10。
    -r, --range: 指定数值范围,默认为10,表示生成的自然数和真分数的分母最大为10。
  2. 生成自然数和真分数
    generate_number(range_limit): 随机生成一个0到range_limit - 1之间的自然数。
    generate_fraction(range_limit): 随机生成一个真分数,分子和分母都在1到range_limit - 1之间,确保分子小于分母。
  3. 生成算术表达式 (generate_expression)
    递归生成算术表达式,深度由max_depth参数控制(默认为3):
    基础情况:如果深度达到最大深度,则生成一个自然数或真分数。
    递归情况:随机选择加、减、乘、除运算符,递归生成左右操作数。
  4. 表达式求值 (evaluate_expression)
    尝试计算给定表达式的值:
    使用Python的eval函数进行求值,将除法运算符从/替换为//以处理整数除法。
    如果求值过程中出现错误,则打印错误信息并返回None。
  5. 生成题目 (generate_question)
    生成一个算术题目,确保表达式的计算结果有效:
    循环调用generate_expression生成表达式,并使用evaluate_expression计算结果。
    如果结果有效,则生成题目字符串。

六、项目小结

技术细节

使用了argparse库来处理命令行参,使用了random库来生成随机数和选择随机运算符,使用了fractions.Fraction来处理真分数的生成和运算。

创新点

通过递归函数和最大深度参数来控制表达式的复杂性,在生成减法和除法表达式时,特别处理了操作数的顺序,以确保结果的合法性。

性能和优化

代码效率:递归生成表达式的方法在深度较大时可能导致性能下降。可以通过非递归的方法或者增加更多的随机性来优化。
内存使用:随着生成题目数量的增加,存储题目和答案的列表可能会占用大量内存。可以考虑使用生成器或者分批处理的方法来减少内存占用。

未来改进方向

更复杂的表达式:增加括号来支持更复杂的表达式生成,使程序更易于使用,扩展程序以支持更复杂的数学运算,如幂运算、开方等。
项目小结:这次的项目,开始看题目以为很简单,但是到了实际做的时候,因为需求比较多,做起来非常困难,而且其中又很多自己原来没有学会的做法。而且这个程序做的不太好,虽然勉强能实现基本功能,但是括号、题目中有真分数等功能没有能实现,而且其中也有很多bug没有得到有效解决。在编写程序的时候,最主要的问题就是对随机出现的运算符进行讨论,因为出现了很多种情况,在编写过程中容易出现遗漏,或者算法不正确等情况,导致最后得到的答案不同,基本上处理方法都是调试,观察程序运行到哪步出现错误,然后对算法出错的那段代码进行修改。在随机函数的调用当中,srand((unsigned)time(0));这句话的使用如果出现在循环当中,就会导致输出的结果全部都是相同的,这句话要放在循环之外就能解决问题。

标签:10,结对,题目,项目,真分数,生成,随机,表达式
From: https://www.cnblogs.com/crr7/p/18438338

相关文章

  • 结对项目
    这个作业属于哪个课程课程这个作业的要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序一、合作成员项目成员学号github仓库地址黄锐3222004335github王伊若3222004382PSP2.1PersonalSoftwareProcess......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标组队编程实现四则运算的项目组队成员阿依古再丽(3222004721)、张汉洁(3222004598)这......
  • 结对项目
    姓名学号Github项目地址薛秋昊3122004369https://github.com/0818XR/0818XR/tree/main/3122004369/GenerateArithmeticProblems曾俊涛3122004373一.PSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟实际耗时(分钟)Planning计划1010......
  • 结对项目
    这个作业属于哪个课程 软件工程课程这个作业要求在哪里 结对项目这个作业的目标 按照要求写一个四则运算生成器成员一 罗祖文3122004537成员二 郑志涛312004547GitHub地址:https://github.com/Lzw1322/3122004537PSP2.1PersonalSoftwareProcessStages预估耗时(分钟......
  • 结对项目
    姓名学号陈祥意3122004821肖商3122004837GitHub地址https://github.com/Csneer/auto_generate_formulaPSP表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟)实际耗时(分钟)Planning计划4050Estimate估计这个任务需要多少时间1460......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标学习合作编程开发项目,继续熟悉运用性能分析工具和PSP表格管理时间,养成良好编程风格......
  • 结对项目
    作业属于的课程计科22级12班作业要求要求作业目标团队合作实现一个自动生成小学四则运算题目的命令行程序姓名学号兰勇3122004783GitHub链接:链接一、PSP表格PSP2.1描述预估耗时(分钟)实际耗时(分钟)Planning·Estimate估计这个......
  • 结对项目
    这个作业属于哪个课程软件工程这个作业要求在哪里结对项目这个作业的目标组队实现一个自动生成小学四则运算题目的程序成员3122004487林丙昆成员3122004502赵衍锴GitHub地址:地址PSP2.1表格PSP2.1PersonalSoftwareProcessStages预估耗时(分钟......
  • 结对项目
    这个作业属于哪个课程计科22级12班这个作业要求在哪里结对项目这个作业的目标实现一个自动生成小学四则运算题目的命令行程序成员梁晓君(3222004682)阿丽娅·阿力木(3222004678)github地址作业github链接PSP表格PSP2.1PersonalSoftwareProcessStag......
  • 结对项目
    这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标实现一个自动生成小学四则运算题目的命令行程序github地址:https://github.com/zjm72......