149
社区成员




+ 体验个人能力过程PSP
+ 简单编程训练
Step1:下载 红楼梦.txt 文件。
Step2:阅读理解以下编程任务,并估计完成这些任务需要的时间,填表写PSP表中预估耗时(时间单位:分钟)
Task1:分割章回。一共120回。
Task2:情感分析,即计算每章回出现 悲、喜次数。可以用"笑"、"喜" 等同义词表示喜;用"悲"、"哭"、"泣"等同义词表示悲。
Task3:计算每个章回里面,典型人物出现的次数。如刘姥姥、王熙凤等。
PSP表格如下:
Personal Softwar ProcessStages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning(计划) | 15 | 10 |
Estimate(估计时间) | 10 | 10 |
Development(开发) | 30 | 30 |
Analysis(需求分析(包括学习新技术)) | 30 | 25 |
Design Spec(生成设计文档) | 30 | 20 |
Design Review(设计复审) | 20 | 15 |
Coding Standard(代码规范) | 25 | 15 |
Design(具体设计) | 30 | 30 |
Coding(具体编码) | 30 | 25 |
Code Review(代码复审) | 60 | 45 |
Test(测试(自我测试,修改代码,提交修改)) | 10 | 15 |
Test Report(测试报告) | 15 | 10 |
Size Measurement(计算工作量) | 10 | 15 |
Postmortem & Process Improvement Plan(事后总结,并提出过程改进计划) | 20 | 15 |
Total(合计) | 335 | 280 |
Step3:按照PSP表格,分14个阶段完成以上编程任务,并填写PSP表的实际耗时一列(单位:分钟)。
Step4:附上本次实验的代码,并加以说明。
#Task1: 分割章回
f = open('红楼梦.txt','r',encoding='utf-8')
s = f.read()
import re
lst_chapter = []
chapter = re.findall("第[\u4E00-\u9FA5]+回", s)#"第([\u4E00-\u9FA5]+)回"返回第和回中间的内容
for x in chapter:
if x not in lst_chapter and len(x)<=5:
lst_chapter.append(x)
print(lst_chapter)
lst_start_chapterindex = []
for x in lst_chapter:
lst_start_chapterindex.append(s.index(x))
print(lst_start_chapterindex)
lst_end_chapterindex = lst_start_chapterindex[1:]+[len(s)]
lst_chapterindex=list(zip(lst_start_chapterindex,lst_end_chapterindex))
print(lst_chapterindex)
#Task2:计算每回苦笑悲喜次数
cnt_laugh=[]
cnt_cry=[]
for ii in range(120):
start=lst_chapterindex[ii][0]
end=lst_chapterindex[ii][1]
cnt_laugh.append(s[start:end].count("笑")+s[start:end].count("喜"))
cnt_cry.append(s[start:end].count("哭")+s[start:end].count("悲"))
#Task3:计算每回刘姥姥出现次数
cnt_liulaolao=[]
for ii in range(120):
start=lst_chapterindex[ii][0]
end=lst_chapterindex[ii][1]
cnt_liulaolao.append(s[start:end].count("刘姥姥"))