198
社区成员




+ 体验个人能力过程PSP
+ 简单编程训练
Step1: 到 以下网站:https://gitcode.net/ntu/SET,下载 红楼梦.txt 文件。如图:
Step2:阅读理解以下编程任务,并估计完成这些任务需要的时间,填表写PSP表中预估耗时(时间单位:分钟)
(PS:先不要看后面的附录部分的提示代码,尽量自己完成。实在不会,可以参考后面的代码)
Task1:分割章回。一共120回。
Task2:情感分析,即计算每章回出现 悲、喜次数。可以用"笑"、"喜" 等同义词表示喜;用"悲"、"哭"、"泣"等同义词表示悲。
Task3:计算每个章回里面,典型人物出现的次数。如刘姥姥、王熙凤等。
PSP表格如下:
Step3:按照PSP表格,分14个阶段完成以上编程任务,并填写PSP表的实际耗时一列(单位:分钟)。
Step4:附上本次实验的代码,并加以说明。建议:采用 http://gitcode.net 网站托管实验代码,并附上项目的链接。
Step5:写出这次实验与以往编程练习不同之处,感受(体会)、经验教训等。
#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("刘姥姥"))