zoukankan      html  css  js  c++  java
  • 梁梦瑶 20190912-3 词频统计

    此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583

    代码:[https://e.coding.net/hahaa/hahaha.git]

    词频统计 SPEC 20180918

    老五在寝室吹牛他熟读过《鲁滨逊漂流记》,在女生面前吹牛热爱《呼啸山庄》《简爱》和《飘》,在你面前说通读了《战争与和平》。但是,他的四级至今没过。你们几个私下商量,这几本大作的单词量怎么可能低于四级,大家听说你学习《构建之法》,一致推举你写个程序名字叫wf,统计英文作品的单词量并给出每个单词出现的次数,准备用于打脸老五。

    希望实现以下效果。以下效果中数字纯属编造。

    功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键
    盘在控制台下输入命令。

    一.功能一重难点

    1.在将.py文件转换为.exe文件上花费了很多时间

    具体步骤:

    (1)进入Python的Scripts文件夹。然后,在cmd中输入命令:pip.exe install Pyinstaller,接下来会完成pyinstaller的安装,安装完成后在Scripts文件夹中会出现pyinstaller.exe,说明安装成功。

    (2)最后,通过命令行的方式实现Python脚本到exe的转换,命令格式为:pyinstaller.exe [-parameter] filename

    2.开始的时候没有思路不知道如何下手,通过请教学长,与同学交流分析此题,然后学习python的相关知识,了解模块的用途,功能一主要了解了collections模块里的Counter类和most_common( )函数以及学习了正则表达式,这些对我而言均是难点。

    Counter用来跟踪值出现的次数

    most_common(n)用来实现Top  n的功能,返回一个列表,列表元组提供频率前n的元素和次数

    findall()方法能够以列表的形式返回能匹配的子串,w匹配从小写a到z,大写A到Z,数字0到9

    def jisuanTotal(word):
        user_counters=Counter(word)
        total=0
        for user_counter in user_counters:
            total+=1
        print("total "+str(total)+" words
    ")
        lsts=user_counters.most_common(10)
    #most_common()用来实现Top 10的功能,返回一个列表,列表元组提供频率前10的元素和次数
        for lst in lsts:
            print("%s  %d"%(lst[0],lst[1]))
            #将元素和计数显示出来
    def word_list(filename): #实现功能一
        with open(filename,encoding='utf-8') as f: #打开文件
            content=f.read() #用方法read()读取文件的全部内容
            words=re.findall(r'[w^-]+',content)
    #findall()方法能够以列表的形式返回能匹配的子串,w匹配从小写a到z,大写A到Z,数字0到9
            jisuanTotal(words)

     二、功能二重难点

    功能二在功能一的基础上进行了改进,学习了文件打开和异常处理,因为之前没有接触过相关知识,所以对我而言是难点。

    异常处理:

    捕捉异常可以使用try/except语句。

    try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。

    如果你不想在异常发生时结束你的程序,只需在try里捕获它。

    def file_name(path): #功能二实现,输入不带后缀的文件名
        path=path+'.txt'
        try:
            with open(path,encoding='utf-8') as f: 
                content=f.read()
        except FileNotFoundError: #异常处理,找不到文件,输出文件不存在
            msg="The file"+path+"does not exist."
            print(msg)
        else:
            words=re.findall(r'[w^-]+',content)
            jisuanTotal(words)

    三、功能三重难点

    了解了os模块是对文件目录进行操作的模块,所以重点在于学习os模块,花费了很长时间的点在于怎样将文件名和扩展名分离,只输出文件名,最终通过百度解决了。os.path.splitext(“文件路径”)用于分离文件名与扩展名;默认返回(fname,fextension)元组。

    def file_floder(path): #功能三实现输入存储有英文作品文件的目录名
        dirs = os.listdir(path)
        for file in dirs:
            if os.path.isfile(file): #判断是否是文件
               print(os.path.splitext(file)[0])
    #os.path.splitext(“文件路径”)用于分离文件名与扩展名;默认返回(fname,fextension)元组
               with open(file,encoding='utf-8') as f:
                   words=re.findall(r'[w^-]+',f.read())
                   jisuanTotal(words)
                   print('----')

     四、功能四重难点

    对重定向知识相关知识进行学习研究,但依旧对此题没有思路。

    五、总结

    根据本次作业,真的学到了不少知识,这周的感悟就是实践是检验真理的唯一标准,学习语言也如此,如果仅仅是看课本看视频,学到的东西都比较浅显,然而在项目中实践会学的比较扎实,当遇到问题时,去学习对应的知识点,这样既能加快速度,又能记得牢固。

    最后做版本控制的时候也遇到了很多困难,步骤如下:首先在coding上建立一个新的项目,其后的操作详见https://blog.csdn.net/weixin_39910711/article/details/89955544

    五、psp

     功能一:因为不知道如何将.py文件打包为.exe文件花费了很长时间。

    功能二和功能三均因为对python知识的不熟悉,对python学习的太少。

    功能四因为没有思路,不了解重定向,最终也没有解决问题。

  • 相关阅读:
    jdbc连接数据库(mysql,sqlserver,oracle)
    简单粗暴将sqlserver表以及数据迁移到oracle
    LXD 2.0 系列(五):镜像管理
    LXD 2.0 系列(十二):调试,及给 LXD 做贡献
    LXD 2.0 系列(七):LXD 中的 Docker
    LXD 2.0 系列(四):资源控制
    LXD 2.0 系列(三):你的第一个 LXD 容器
    LXD 2.0 系列(二):安装与配置
    LXD 2.0 系列(一):LXD 入门
    Debian-linux 网卡配置
  • 原文地址:https://www.cnblogs.com/summerkingy/p/11538265.html
Copyright © 2011-2022 走看看