20180912-3 词频统计
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/6583
代码参见https://e.coding.net/wangzw877/wzw.git
功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键盘在控制台下输入命令
重点难点:
这一部分的重点主要是对字符的分割和通过列表进行存储,同时需要注意的是replace函数的使用,把文件中的特殊字符替换成空格,从而方便字符统计。
统计字符即对列表元素进行统计,期间需要sort函数进行排序。
对python使用的生疏是我在转换exe文件时花费大量时间,在安装pip时,更新版本总是失败,最后在网上查找得以解决。
部分代码如下:
def getText(name): #对字符进行分割 txt = open(name, "r",encoding = 'utf-8').read() txt = txt.lower() for ch in '\'!"#$%&()*+,./:;<=>?@[\\]^_‘{|}~': txt = txt.replace(ch, " ") return txt
def p_count(words,nn=5): #统计字符个数 counts = {} for word in txt: counts[word] = counts.get(word,0) + 1 items = list(counts.items()) items.sort(key=lambda x:x[1], reverse=True) for i in range(nn): word, count = items[i] print ("{0:<9}{1:>5}".format(word, count))
if com_list[1] == '-s': txt_name =com_list[-1] if '.txt' not in txt_name: txt_name += '.txt' txt_name = os.path.dirname(os.path.realpath(__file__)) + '\\' + txt_name # 加绝对路径 txt = getText(txt_name).split()
运行结果如下:
功能2 支持命令行输入英文作品的文件名,请老五亲自录入。
这部分难点是对文件路径的编写,以及如何通过控制台输入的“-s”等符号控制各个功能的实现。最后还是通过借鉴别人的代码经验而勉强实现。
部分代码如下:
com_list = com.split() if com_list[0] == 'wf': if com_list[1] == '-s': txt_name =com_list[-1] if '.txt' not in txt_name: txt_name += '.txt' txt_name = os.path.dirname(os.path.realpath(__file__)) + '\\' + txt_name txt = getText(txt_name).split() if len(txt) > 15: print('total', len(txt), '\n') else: print('total', len(set(txt)), '\n') p_count(txt, min(10, len(set(txt))))
运行结果如下:
![](https://img2018.cnblogs.com/blog/1790398/201909/1790398-20190918070957517-2041798987.png)
功能3 支持命令行输入存储有英文作品文件的目录名,批量统计。
只完成了对文件夹的文件名的输出,没有做到对文件的字符统计。能读取文件名说明路径没有问题,分析具体原因应该是没有对统计函数调用的时候出现问题。
对os模块和sys功能仍有许多不理解的地方,最后未能学会使用。
部分代码如下;
elif com_list[0] == 'dir': if Path(com_list[1]).is_dir(): filenames = os.listdir(com_list[1]) for filename in filenames: print(filename[:-4])
运行结果如下:
功能4 从控制台读入英文单篇作品
查阅了很多资料,还是对重定向理解仍然模糊。也试着对尝试了多次程序实验,最终仍未成功。
PSP:
功能 |
计划时间 |
实际时间 |
时间差 |
原因 |
功能一 |
150min |
210min |
60min |
对python不熟悉,文件读取路径编写出错 |
功能二 |
120min |
100min |
20min |
在功能一的基础上进度快了些 |
功能三 |
180min |
200min |
20min |
查阅资料,小部分完成 |
功能四 |
120min |
155min |
35min |
对重定向不理解,未完成 |
测试 |
60min |
70min |
10min |
安装pip,转换exe文件 |
总结:这次作业对我的刺激很大,花费了大量时间仍然毫无进展,使我认识到自己动手能力太差,感觉是自己的学习方法或是学习方向出了问题,下一步希望自己找到突破口继续努力吧.