课后作业3

  • 学号:2017****07043
  • 姓名:张淑慧

2) 程序分析

# filename: word_freq.py
# 阅读注释,在所有pass处删除pass,添加代码

from string import punctuation


def process_file(dst):     # 读文件到缓冲区
    try:     # 打开文件
        dkwj = open(dst,'r')
    except IOError as s:
        print (s)
        return None
    try:     # 读文件到缓冲区
        bvffer = dkwj.read()
    except:
        print ('Read File Error!')
        return None
    dkwj.close()

    return bvffer


def process_buffer(bvffer):
    if bvffer:
        word_freq = {}
        # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
        bvffer = bvffer.lower()
        for i in '“‘!;,.?”[]':
            bvffer = bvffer.replace(i, " ")
        words = bvffer.strip().split()
        for word in words:
            word_freq[word] = word_freq.get(word, 0) + 1
            
        return word_freq


def output_result(word_freq):
    if word_freq:
        sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
        for item in sorted_word_freq[:10]:  # 输出 Top 10 的单词
            print(item)

def main():

    dst = "Gone_with_the_wind.txt"
    bvffer = process_file(dst)
    word_freq = process_buffer(bvffer)
    output_result(word_freq)

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('dst')
    args = parser.parse_args()
    dst = args.dst
    bvffer = process_file(dst)
    word_freq = process_buffer(bvffer)
    output_result(word_freq)

 词组频率统计代码

3) 性能分析结果及改进。

 运行结果:

 

 

  • 指出执行次数最多的代码
  •  

     

  • 执行时间最长的代码
  •  

  • 给出改进优化的方法以及你的改进代码
  • # filename: word_freq.py
    # 阅读注释,在所有pass处删除pass,添加代码
    
    from string import punctuation
    
    
    def process_file(dst):     # 读文件到缓冲区
        try:     # 打开文件
            dkwj = open(dst,'r')
        except IOError as s:
            print (s)
            return None
        try:     # 读文件到缓冲区
            bvffer = dkwj.read()
        except:
            print ('Read File Error!')
            return None
        dkwj.close()
    
        return bvffer
    
    
    def process_buffer(bvffer):
        if bvffer:
            word_freq = {}
            # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
            bvffer = bvffer.lower()
            for i in '“‘!;,.?”[]':
                bvffer = bvffer.replace(i, " ")
            words = bvffer.strip().split()
            for word in words:
                word_freq[word] = word_freq.get(word, 0) + 1
                
            return word_freq
    
    
    def output_result(word_freq):
        if word_freq:
            sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
            for item in sorted_word_freq[:10]:  # 输出 Top 10 的单词
                print(item)
    
    def main():
    
        dst = "Gone_with_the_wind.txt"
        bvffer = process_file(dst)
        word_freq = process_buffer(bvffer)
        output_result(word_freq)
    
    if __name__ == "__main__":
        import argparse
        parser = argparse.ArgumentParser()
        parser.add_argument('dst')
        args = parser.parse_args()
        dst = args.dst
        bvffer = process_file(dst)
        word_freq = process_buffer(bvffer)
        output_result(word_freq)

     

4) 程序运行命令、运行结果截图以及改进后的程序运行命令及结果截图 。

 

 

5) 给出你对此次任务的总结与反思。

基本要求达成,改进后速度明显增快

posted @ 2019-03-28 15:21  张淑慧  阅读(114)  评论(0编辑  收藏  举报