wordcount作业
这个作业属于哪个课程 |
https://edu.cnblogs.com/campus/nue/SE202010/ |
这个作业要求在哪里 |
https://edu.cnblogs.com/campus/nue/SE202010/homework/11481 |
这个作业的目标 |
熟悉个人开发PSP的流程,锻炼自己动手能力 |
学号 |
2030101 |
小组成员:郑子涵,邱锦
1.代码仓库链接
https://gitee.com/wojiaoxiaoming/wordcount.git
2.PSP表格
PSP2.1 |
Personal Software Process Stages |
预估耗时(分钟) |
实际耗时(分钟) |
Planning |
计划 |
300 |
无 |
· Estimate |
· 估计这个任务需要多少时间 |
100 |
无 |
Development |
开发 |
2000 |
300 |
· Analysis |
· 需求分析 (包括学习新技术) |
1000 |
100 |
· Design Spec |
· 生成设计文档 |
1000 |
50 |
· Design Review |
· 设计复审 |
1500 |
100 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
300 |
30 |
· Design |
· 具体设计 |
1000 |
3000 |
· Coding |
· 具体编码 |
2000 |
2000 |
· Code Review |
· 代码复审 |
2000 |
240 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
1000 |
100 |
Reporting |
报告 |
100 |
300 |
· Test Repor |
· 测试报告 |
100 |
无 |
· Size Measurement |
· 计算工作量 |
300 |
无 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
1000 |
30 |
|
合计 |
13700 |
6250 |
3.程序分析
3.1 统计字符串
f.read()返回一个文件从头到尾的字符串,只需要统计返回的字符串长度
3.2 统计行数
f.readlines()返回一个文件各行组成的列表,只统计列表元素个数
3.3 统计单词数
正则表达式:单词是由至少两个字母组成的且不含其他符号。用re.findall(r'[A-Za-z]{2,}'筛选单词
3.4 输出TOP10词频的单词
利用word.sort(key=lambda x: x[1], reverse=(True))将单词排序并用range命令输出词频前十的单词。
3.5 将信息写入文件
写入文件利用f.write(info)
3.6 扩展功能
字符串处理
先使用str.replace(a, b)方法将字符串中的换行符,制表符和空格全部去掉,接下来就进行判断:如果开头是'//'的话就作为注释行,不考虑多行注释;如果一行只有一个字符或没有字符就作为空行;其他全部视为代码行。
3.7 接口封装
4.性能分析
用visual studio自带的studio profiling tools工具得到wordcount的性能报告如下:
5.计算模块部分异常处理
如图是未安装py2exe工具
如图是不匹配任何的缩进格式,需要统一缩进的格式
6.测试
对一本万字英文小说进行了测试,得到的结果如下:
7.学习日志
学习时段 |
学习内容 |
收获与体会 |
自我效率评价 |
11.08(2:00—5:00) (6:00—21:00) |
开始计划设计wordcount |
从一开始的一头雾水到渐渐有了思路。 |
效率较低 |
11.11(8:00—11:00) |
开始wordcount的编程 |
观看他人的博客园,学习他人的编程语句,慢慢转化成自己的东西。 |
效率较低 |
11.15(15:00—21:00) |
完成了wordcount的主函数 |
逐渐熟悉了部分编程语句和方法,渐渐能看的懂代码语句,并且渐渐会运用了。 |
效率较低 |
11.16(8:00—11:00) (15:00—21:00) |
对初步的主函数进行了测试 |
发现部分功能如统计词频功能无法实现,继续学习其他语句以突破这个桎梏。 |
效率极低 |
11.17(8:00—11:00) (15:00—21:00) |
完成了代码的改造和优化,并且最终测试成功 |
独立完成了wordcount还是很开心的。 |
效率极低 |
8.总结
通过本次作业学习,我初步掌握了wordcount统计单词数,字符数,行数和词频的功能,也了解了psp表格的设计,在实践中不断改进和测试我的代码,这对提高自己的python水平帮助很大,让我更加感叹软件工程的伟大之处。当然过程中也遇到许多的问题,但我也通过强大的互联网也一一化解了它们,在遇到困难的过程中不断的提升自己。