栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2022(春)软工作业2 编程练习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022(春)软工作业2 编程练习

目录

1. 程序分析,对程序中的四个函数做简要说明 

2. 代码风格说明。 

3. 程序运行命令、运行结果截图 

4. 性能分析结果及改进


1. 程序分析,对程序中的四个函数做简要说明

读文件到缓冲区

def process_file(dst):  # 读文件到缓冲区
    try:  # 打开文件
        file=open(dst,'r')
    except IOError as s:
        print(s)
        return None
    try:  # 读文件到缓冲区
        bvffer=file.read()
    except:
        print
        "Read File Error!"
        return None
    file.close()
    return bvffer
  1. 添加处理缓冲区,统计每个单词的频率,存放在字典

def process_buffer(bvffer):
    if bvffer:
        word_freq = {}
        # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
        for word in bvffer.split():
            if word not in word_freq:
                word_freq[word]=0
            word_freq[word]+=1

调用之前的函数

def main():
    dst = "D:/桌面/Gone_with_the_wind.txt"
    bvffer = process_file(dst)
    word_freq = process_buffer(bvffer)
    output_result(word_freq)

主函数 

 
if __name__ == "__main__":
    import cProfile
    import pstats
 
    cProfile.run("main()", filename="result.out")
    p = pstats.Stats('result.out')  # 创建Stats对象
    p.sort_stats('calls').print_stats(10)  # 按调用次数排序,打印前10函数的信息
    p.strip_dirs().sort_stats("cumulative", "name").print_stats(10)  # 按运行时间和函数名进行排序,打印前10行函数的信息
    p.print_callees("process_buffer") 
2.代码风格说明

缩进规则:

  • Python 采用代码缩进和冒号( : )来区分代码块之间的层次。
  • 在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。
  • Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。
  •  
      
    1. def 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)

    其中的if与for语句有着各自的缩进

3.结果输出


 

 
4. 寻找执行时间、次数最多的部分代码与改进 

执行时间最长的代码

 
def process_buffer(bvffer):
    if bvffer:
        word_freq = {}  # 新建一个空字典word_freq
        # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
        for word in bvffer.split():  # .split()函数将bvffer切片
            if word not in word_freq:
                word_freq[word] = 0
            word_freq[word] += 1
        return word_freq

修改后代码

def process_buffer(bvffer):
    if bvffer:
        word_freq = {}  # 新建一个空字典word_freq
        # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq
        for word in bvffer.split():  # .split()函数将bvffer切片
            word_freq.setdefault(word, 0)
            word_freq[word] += 1
        return word_freq

总结:查找较为复杂,且区分单词大小写

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931650.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号