一.需求分析
用户需求:
1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。
2.程序需要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。
3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。
4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。
5.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。
二.功能设计
基本功能:
1.读入读出文件功能(将文件进行读取,存放)
2.用户输入功能(用户输入想要查询的单词,以及查询高频单词的个数)
3.词频统计功能
4.排序功能(降序排序和按字典顺序排序)
5.显示功能(显示柱状图,显示前k个高频单词的词频,显示指定单词出现的次数)
备注:因为编码能力有限,所以只能实现部分功能,没有按照老师的要求将功能全部实现。
三.设计实现
用findall 抽取出[a-z,A-Z]的英文单词 然后用for循环遍历统计单词出现的次数
##四.测试运行
##五.部分代码
import re #应用re模块
lines_count = 0
chars_count = 0
words_dict= {}
f=open('cyy.txt','r')
for line in f:
lines_count = lines_count + 1
chars_count = chars_count + len(line)
match = re.findall(r'[^a-zA-Z]+', line)#匹配英文单词
for i in match:
line = line.replace(i, ' ')
lines_list = line.split()
for i in lines_list:
if i not in words_dict:
words_dict[i] = 1
else:
words_dict[i] = words_dict[i] + 1
f.close()
for w,n in words_dict.items():
print(w,n)
##六.PSP展示
任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
计划 | 10 | 10 |
估计这个任务需要多少时间,并规划大致工作步骤 | 30 | 20 |
开发 | 200 | 200 |
需求分析 (包括学习新技术) | 10 | 10 |
生成设计文档 | 20 | 15 |
设计复审 (和同事审核设计文档) | 20 | 15 |
代码规范 (为目前的开发制定合适的规范) | 20 | 20 |
具体设计 | 30 | 30 |
具体编码 | 100 | 100 |
代码复审 | 25 | 25 |
测试(自我测试,修改代码,提交修改) | 20 | 20 |
报告 | 30 | 30 |
测试报告 | 10 | 10 |
计算工作量 | 5 | 3 |
事后总结 ,并提出过程改进计划 | 6 | 4 |
从 PSP表中可以看出,我所有的阶段付出的时间都比别人多好多可能是因为第一次,缺乏经验,在每一个阶段我都在搜索,归纳,总结,所以付出的时间相对来说就比别人多好多,不过通过做这次表格,让我了解了做一个项目所要经历的阶段,都要做什么,虽然细节还是不懂,但是大概框架还是知道了,所以在今后的学习中,我会加倍努力,弥补自己的不足。