当前位置: 首页 > news >正文

作业三(结对编程)-小学四则运算题目生成与判卷(Python + 可视化)

结对作业:小学四则运算题目生成与判卷(Python + 可视化)

  • 姓名/学号:翁广驰(3123004409)、关健佳(3121004072)
  • Github项目地址:https://github.com/Gucvii/homework

PSP2.1 表格(实现前的预估)(1分)

PSP 阶段 预估耗时(分钟)
计划(评估任务规模与交付物) 30
需求分析(理解题目与约束) 40
设计规格(模块划分与数据结构) 45
设计复审(结对评审) 20
代码规范(类型标注、命名、格式) 15
详细设计(表达式树/生成/解析/判卷) 60
编码实现(核心逻辑与CLI) 120
代码复审(互相走查) 30
测试(单元与端到端) 60
测试报告与总结 20
工作量度量与过程改进计划 20
合计 460

效能分析(3分)

  • 改进思路:
    • 去重采用“交换 + 与 × 的左右操作数”的规范化签名(不做结合律扁平化),匹配题目对“有限次交换”的定义,显著减少重复冲突。
    • 生成阶段对不合法的 - 与 ÷ 做就地校验与重试,避免回溯解析,提高成功率。
    • I/O 批量写入 Exercises.txtAnswers.txt,避免频繁磁盘操作。
  • 耗时记录:约 40 分钟(包含基准与优化迭代)。
  • 性能图:这是优化后的性能图

截屏2025-10-22 11.16

pipeline

performance


设计与实现(5分)

  • 代码组织:
    • arithmetic.py
      • 表达式模型:Number(Fraction)BinOp(op, left, right)Expr = Union[Number, BinOp]
      • 评估:evaluate(e) -> Fraction,使用 fractions.Fraction 保证精确与类型安全。
      • 格式化:format_fraction(Fraction) -> str,支持整数、真分数、带分数(a’b/c)。
      • 序列化:expr_to_string(e),输出括号与空格,满足题干格式。
      • 去重签名:canonical_sig(e),对 +/× 交换左右操作数并排序,其它运算保持序。
      • 生成:generate_unique_expressions(n, r, max_ops=3),满足约束与不重复。
      • 解析:parse_expression_line(line) 与分数解析,支持 a’b/cb/c、整数。
      • 文件:write_exercises_and_answers(...)grade(...) 输出 Grade.txt
    • main.py:CLI 接口,支持 -r-n 生成与 -e -a 判卷。
    • app.py:Streamlit 图形界面,含“生成题目 / 判卷统计”两页。
  • 关键约束实现:
    • 减法子表达式满足 e1 ≥ e2;除法子表达式结果为真分数 0 < e1 ÷ e2 < 1
    • 每题运算符个数 ≤ 3;输出与解析采用题干格式与空格规则。
    • 不重复判定遵循“仅允许交换 +/× 的左右”规则(与题目示例一致)。

代码说明(4分)

  • 表达式与求值:
@dataclass(frozen=True)
class Number:value: Fraction@dataclass(frozen=True)
class BinOp:op: strleft: Exprright: Expr# 求值
if e.op == '+': return l + r
if e.op == '-': return l - r
if e.op == '×': return l * r
if e.op == '÷': return l / r
  • 真分数与带分数格式化:
if fr.denominator == 1: return str(fr.numerator)
sign = '-' if fr < 0 else ''
integer = fr.numerator // fr.denominator
remainder = Fraction(fr.numerator % fr.denominator, fr.denominator)
return f"{sign}{integer}’{remainder.numerator}/{remainder.denominator}" if integer else f"{sign}{remainder.numerator}/{remainder.denominator}"
  • 去重签名(仅交换 +/× 左右):
if e.op in ['+', '×']:s1, s2 = sorted([canonical_sig(e.left), canonical_sig(e.right)])return f"({s1}{e.op}{s2})"

测试运行(3分)

  • 正确性说明:
    • 使用 Fraction 保证四则运算精确无误差;解析与格式化相互可逆,答案与判卷一致。
    • 生成阶段保证减法与除法的约束,避免负数与除零;题目不重复由签名集判定。
  • 测试用例(节选 10 个):
    1. 1/6 + 1/8 =7/24
    2. 2 + 3/4 =2’3/4
    3. (3 × 1/2) + 1/3 =5/6
    4. (5 ÷ 8) =5/8
    5. (3 ÷ 2) 不生成(结果>1),生成器约束生效。
    6. (3 - 5) 不生成(中间负数),生成器约束生效。
    7. 1 + 2 + 33 + (2 + 1) 判为重复;与 3 + 2 + 1 不重复。
    8. 0 ÷ 3 =0(不会生成,因需真分数,生成器约束生效)。
    9. 混合数解析:2’3/819/8
    10. 大规模生成:-r 10 -n 10000 正常完成,且去重与约束保持。

实际耗时记录(1分)

PSP 阶段 实际耗时(分钟)
计划 25
需求分析 45
设计规格 40
设计复审 20
代码规范 10
详细设计 60
编码实现 130
代码复审 30
测试 70
报告与总结 30
改进计划 20
合计 480

项目小结(2分)

  • 结对感受:两人分工明确(一人核心逻辑与CLI,另一人GUI与文档)。在签名判重策略上充分讨论并依据题目示例确定“不做结合律扁平化,仅交换 +/× 左右”。
  • 闪光点与建议:
    • 闪光点:类型标注完整、解析鲁棒、约束严格、界面简洁。
    • 建议:后续可增加“自定义操作符权重”“更多括号形态”与更细致的性能图。

使用说明(加分)

  • 生成题目:
    • python main.py -r 10 -n 10
    • 当前目录输出:Exercises.txtAnswers.txt
  • 判卷统计:
    • python main.py -e Exercises.txt -a Answers.txt
    • 当前目录输出:Grade.txt
  • 图形界面:
    • streamlit run app.py
    • 页面含“生成题目 / 判卷统计”,支持预览与统计输出。
    • 图形化界面预览:

截屏2025-10-22 11.36

截屏2025-10-22 11.36

截屏2025-10-22 11.36

http://www.gsyq.cn/news/27260.html

相关文章:

  • 2025年10月景区钢丝绳护栏厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • 技术 | 在单台电脑上管理多个 GitHub 账户并解决推送问题(测试中)
  • CF2159E
  • 阿里云API网关日志问题
  • k8s部署的milvus提升性能需要扩容的角色节点
  • 小程序-定义头部导航
  • Golang的 cron 库
  • 2025年10月智能门窗代理厂家全景解析报告,基于专业测评的技术、性能及市场优势深度分析
  • Android插件化框架
  • 完整教程:Python全栈(基础篇)——Day06:后端内容(定义函数+调用函数+实战演示+每日一题)
  • 完整教程:Oracle/MySQL/SqlServer/PostgreSQL等数据库的数据类型映射以及各版本数据类型情况说明
  • 中小企业如何低成本部署电话呼叫软件网页版?一步步教你做
  • 配置git
  • Vscode误删文件如何恢复(二)?
  • 中国企业DevOps工具链选型标准深度解析:云原生与开源生态的博弈
  • 在PySide6/PyQt6的开发框架中,增加对表格多种格式录入的处理,以及主从表的数据显示和保存操作。
  • 笔记本电脑如何连接打印机?安装指南分享给你!
  • 技术团队负责人咨询AI数智化升级改造路径
  • 2025 年胶条厂家最新推荐排行榜:聚焦密封 / 系统门窗 / 环保领域,森特达领衔优质品牌榜单EPDM/硫化焊接/门窗复合/门窗幕墙胶条厂家推荐
  • Go 开发即时通讯服务端完整教程
  • Python 中 的 “.” 是分隔符还是运算符,都可以怎么用?
  • 国产项目管理工具Gitee如何以本土化优势领跑企业级市场?
  • 2025 年最新工矿灯生产厂家口碑推荐榜:精选 LED/防爆/高光效等多类型产品,助力企业选出实力与品质兼具的照明品牌
  • 2025.10.21 NOIP模拟赛
  • 基于GIS的林业数据资源管理驾驶舱
  • 2025年10月抗老面霜评测榜:紧致提亮真实数据排行
  • PWM实现LED渐变效果及彩灯控制
  • 数据挖掘之人工智能与机器学习
  • 2025年DevSecOps工具生态全景观察:从代码托管到安全左移的实践演进
  • 华为荣耀笔记本演示机样机解锁带原装F10智能还原功能 - 指南