第二次作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/26rjjc |
|---|---|
| 这个作业的目标 | 实现一个命令行文本计数统计程序,学习ai在此类任务中的工作流程 |
| 姓名-学号 | 屠鸿飞-2024329301053 |
一、作业与我的做法
作业要求实现 wc.exe [参数] [文件名],统计纯英文 txt 的字符数、单词数、句子数,扩展功能统计代码行、空行、注释行。
本项目全程使用 AI 辅助完成。 我负责提需求、定口径、验收结果;AI 负责写代码、写测试、跑性能测试。下面如实记录整个过程和完整提示词。
二、项目结构
wc-tool/
├── wc.py # 入口
├── src/wctool/
│ ├── counter.py # 字符/单词/句子
│ ├── codestat.py # 代码行/空行/注释行
│ └── cli.py # 命令行与输出
├── tests/ # 170 个单元测试
├── benchmarks/bench.py # 性能测试
└── docs/AI_PROMPTS.md # 完整对话记录
三、我的完整提示词
第 1 轮(任务下发):
完成软件技术基础课程的作业,作业描述:实现一个命令行文本计数统计程序。能正确统计导入的纯英文txt文本中的字符数,单词数,句子数。具体命令行界面要求举例:命令模式: wc.exe [参数] [文件名],wc.exe -c file.txt 统计字符数,wc.exe -w file.txt 统计单词数。扩展功能(加分项):统计代码行、空行、注释行等,并提供相应命令接口。作业要求:项目代码上传到自己的码云。程序和参数名可以按个人喜好命名。项目文档应包含项目说明,写入README.MD,包含项目简介及用法、文件列表说明、例程运行及结果。码云上传的项目要求必须通过多次提交(commit)体现各个版本更迭和运行结果截图,版本号分别为 v0.1 空项目;v0.2 项目完成基础功能;v0.3 项目完成扩展功能。编写对应的单元测试。使用选用的IDE附带的工具进行performance test。交作业时需直接附上自己的码云仓库地址,如果全程使用AI完成需要附上所有对话提示词。
第 2 轮(要求推送):
直接推送,仓库地址 https://gitee.com/tuhongfei2006/ruanjianjishujichuzuoye ,令牌 xxx
后续还有几轮追问:性能测试是什么意思、Python 环境怎么配、博客园随笔怎么写。这些属于交作业流程,不影响代码本身。
完整对话记录见仓库
docs/AI_PROMPTS.md。
四、AI 帮我发现并修掉的三个问题
这部分是我认为最有价值的地方——AI 并不是一次就写对,而是靠测试和性能数据把问题暴露出来。
| 问题 | 现象 | 修复 |
|---|---|---|
| 小数点切句 | 3.14 is pi. 被算成 2 句 |
判断 . 前后是否都是数字,是则合并 |
| 性能太慢 | 1MB 文本耗时 86ms,仅 11.6 MB/s | Python 逐字符循环改为正则切分,降至 29ms |
| 汇总崩溃 | 多文件统计时报 AttributeError |
修正字段名映射 |
其中性能问题最典型。第一版用 Python 的 for 循环逐字符拼接句子,看起来没问题,实测却比一个简单的正则实现还慢 3 倍。改成 re.split 后:
| 文件大小 | 优化前 | 优化后 |
|---|---|---|
| 1 MB | 86 ms | 29 ms |
| 20 MB | — | 586 ms(约 34 MB/s) |
五、我做的验收工作
AI 写完不代表就对,我做了这些核对:
| 验证项 | 方法 | 结果 |
|---|---|---|
| 字符数 | 与 UNIX wc -c 对照 |
一致(474) |
| 行分类 | 人工逐行核对 demo.c 的 43 行 |
27 代码 / 7 空行 / 9 注释,正确 |
| 字符串陷阱 | 检查 http://、'"'、/* 在字符串内 |
均未误判 |
| 小数点 | 3.14 is pi. 应计 1 句 |
通过(修复前 2 句) |
| 全部测试 | pytest |
170 passed |
| 覆盖率 | pytest --cov |
96%(核心模块 100%/99%) |
六、提交记录
75945cf v0.1 空项目:初始化仓库结构
2c8408a v0.2 基础功能:字符数、单词数、句子数统计
a28a220 v0.3 扩展功能:代码行/空行/注释行统计 + 性能测试
20e6588 docs: 完整 README、AI 提示词记录、运行截图与性能报告
一个插曲:做 v0.1 时我把功能代码和目录一起写了,不符合“空项目”要求,只能退回去重建提交。版本规划要一开始就想清楚。
七、小结
- AI 擅长写代码,但口径要人来定——
don't算 1 个还是 2 个单词,只有人能拍板。 - 测试是把 AI 的“口头正确”变成“可验证正确”的关键手段,170 个用例固定了所有口径决策。
- AI 的第一版不一定是最优解,性能差了 3 倍,靠 benchmark 才测出来。
仓库地址:https://gitee.com/tuhongfei2006/ruanjianjishujichuzuoye
浙公网安备 33010602011771号