课后作业3

本文介绍了一个Python程序,该程序能够从指定文件中读取文本内容,并统计每个单词出现的频率。程序通过去除标点符号和空格来确保统计准确性,并最终输出词频最高的前十名单词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 2017*****7012
  • 石运
  • 码云地址:https://gitee.com/xgxdmx/word_frequency.git
  • 程序分析:
  • def process_file(file): # 读文件到缓冲区
    try: # 打开文件
    text = open(file)
    except IOError as s:
    print(s)
    return None
    try: # 读文件到缓冲区
    buffer = text.read()
    except:
    print("Read File Error!")
    return None
    text.close()
    return buffer
    此函数负责打开读取文档并将文档存储到buffer里面,执行完毕后关闭文档
  • def process_buffer(buffer):
    if buffer:
    word_freq = {}
    # 下面添加处理缓冲区 buffer代码,统计每个单词的频率,存放在字典word_freq
    for i in buffer.split():
    individual_word = i.strip(punctuation + ' ')
    if individual_word in word_freq:
    word_freq[individual_word] += 1
    else:
    word_freq[individual_word] = 1
    return word_freq
    此函数负责将buffer内的数据进行切片,引用punctuation去掉符号空格,并用for循环进行统计,将统计数据存储在word_freq并返回值
  • def output_result(word_freq):
    if word_freq:
    sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
    print("词频统计:")
    # 输出 Top 10 的单词
    for item in range(len(sorted_word_freq[:10])):
    i, count = sorted_word_freq[item]
    print("{0:<10}{1:>5}".format(i, count))
    此函数将统计好的数据进行排序并输出前十个数据
  • if name == "main":
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument('dst')
    args = parser.parse_args()
    dst = args.dst
    buffer = process_file(dst)
    word_freq = process_buffer(buffer)
    output_result(word_freq)
    在主函数启动后导入argparse包,并执行上述几个函数
  • 性能分析结果及改进:
    执行时间最长的代码:def process_buffer(buffer)
    执行次数最多的代码:sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)
  • 程序运行命令、运行结果截图以及改进后的程序运行命令及结果截图
  • 改进前:
    1627117-20190402200526124-1781349295.png
    1627117-20190402200543188-964322634.png
    1627117-20190402200555534-481646404.png
    1627117-20190402200615342-1851318437.png
    1627117-20190402200630984-1954398013.png
    1627117-20190402200645536-1623450542.png
    1627117-20190402200658464-932524483.png
    改进后:
    1627117-20190402200742352-564370442.png
    1627117-20190402200752630-1898072954.png
    1627117-20190402200802758-1988867921.png
    1627117-20190402200813077-1235452969.png
    1627117-20190402200825377-976161274.png
    1627117-20190402200846449-21498640.png
  • 总结与反思
    此程序让我熟悉了如何进行性能分析以及git分支管理,同时也掌握了python中的文件读取、文字切片等功能

转载于:https://www.cnblogs.com/xgxdmx/p/10644978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值