3
1.基本信息
学号:2017*****1002;
姓名:张峰
码云仓库地址:https://gitee.com/azfzw/events
.程序分析
(1)首先声明编码方式和导入string模块中的punctuation方法
1.from string import punctuation
(2)读取文件到缓冲区
1def process_file(dst): # 读文件到缓冲区
2 try: # 打开文件
3 f1=open(dst,"r")
4 except IOError as s:
5 print (s)
6 return None
7 try: # 读文件到缓冲区
8 bvffer=f1.read()
9 except:
10 print ("Read File Error!")
11 return None
12 f1.close()
13 return bvffer
(3)数据处理,设置缓冲区,处理缓冲区bvffer的文件,并去除字符串中的符号将单词分割并读入词典,统计词频。
1def process_buffer(bvffer):
2 if bvffer:
3 word_freq = {}
4 # 下面添加处理缓冲区 bvffer的代码,统计每个单词的频率,存放在字典word_freq
5 bvffer=bvffer.lower()
6 for x in '~!@#$%^&()_+/-+][':
7 bvffer=bvffer.replace(x, " ")
8 words=bvffer.strip().split()
9 for word in words:
10 word_freq[word]=word_freq.get(word,0)+1
11 return word_freq
(4)设置输出函数,用输出函数处理好单词按照词频顺序排列,输出词频top10的单词。
1def output_result(word_freq):
2 if word_freq:
3 sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
4 for item in sorted_word_freq[:10]: # 输出 Top 10 的单词
5 print(item)
(5)对main函数进行封装,用于测试
1if name == "main":
2 import argparse
3 parser = argparse.ArgumentParser()
4 parser.add_argument('dst')
5 args = parser.parse_args()
6 dst = args.dst
7 bvffer = process_file(dst)
8 word_freq = process_buffer(bvffer)
9 output_result(word_freq)
3.性能分析结果及改进
(1)测试:Gone_with_the_wind.txt 中词频统计top10:
(2)测试:Gone_with_the_wind.txt 中执行次数最多的代码:
3)测试:Gone_with_the_wind.txt 中执行时间最长的代码:
(4)测试:A_Tale_of_Two_Cities.txt 中词频top 10:
(5)A_Tale_of_Two_Cities.txt 中执行次数最多代码:
3.代码改进
把执行时间最长的代码进行优化改进,可以使其速度更快,用时更少
4.总结在本次课后作业中,使我更加熟练的掌握了码云以及博客网的使用,但还不会运行代码
浙公网安备 33010602011771号