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.总结在本次课后作业中,使我更加熟练的掌握了码云以及博客网的使用,但还不会运行代码

posted @ 2019-04-08 14:35  002张峰  阅读(111)  评论(0)    收藏  举报