梁梦瑶 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\n")
    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学习的太少。

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

posted @ 2019-09-18 06:53  summerkingy  阅读(254)  评论(0编辑  收藏  举报