此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11206]
github链接:https://github.com/hhwwxx11/20200917-2
coding地址:https://kaixindebenxiaohaiya.coding.net/public/cipintongji/20200917-2/git/files
词频统计 SPEC
老五在寝室吹牛他熟读过《鲁滨逊漂流记》,在女生面前吹牛热爱《呼啸山庄》《简爱》和《飘》,在你面前说通读了《战争与和平》。但是,他的四级至今没过。你们几个私下商量,这几本大作的单词量怎么可能低于四级,大家听说你学习《构建之法》,一致推举你写个程序名字叫wf,统计英文作品的单词量并给出每个单词出现的次数,准备用于打脸老五。
希望实现以下效果。以下效果中数字纯属编造。
功能1 小文件输入。 为表明程序能跑,结果真实而不是迫害老五,请他亲自键盘在控制台下输入命令。
重点难点:对于.py文件转成.exe文件不熟悉,感觉正则表达式是比较难的,刚开始学python,对很多语法什么的都不是很了解
重要代码:
def doCount(accept):
s = '.txt'
if s in accept:
path = accept
else:
path = accept + '.txt'
f = open(path, encoding='utf-8')
words = re.findall(r'[a-z0-9^-]+', f.read().lower())
count(words)
功能2 支持命令行输入英文作品的文件名,请老五亲自录入。
重点难点:判断输入的文件名中是否有.txt
重要代码:
def doCount(accept):
s = '.txt'
if s in accept:
path = accept
else:
path = accept + '.txt'
f = open(path, encoding='utf-8')
words = re.findall(r'[a-z0-9^-]+', f.read().lower())
count(words)
功能3 支持命令行输入存储有英文作品文件的目录名,批量统计。
重点难点:在文件夹下所有文件中读出.txt文件,并统计出来
重要代码:
def fileFindAndCount(path1):
files = os.listdir(path1)
for file in files:
if file.endswith('txt'):
if os.path.isfile(path1+"/"+file):
doSomeFileCount(path1+"/"+file)
def doSomeFileCount(path):
print(path)
f = open(path, encoding='utf-8')
words = re.findall(r'[a-z0-9^-]+', f.read().lower())
count(words)
print('----')
功能4 从控制台读入英文单篇作品,这不是为了打脸老五,而是为了向你女朋友炫酷,表明你能提供更适合嵌入脚本中的作品(或者如她所说,不过是更灵活的接口)。如果读不懂需求,请教师兄师姐,或者 bing: linux 重定向,尽管这个功能在windows下也有,搜索关键词中加入linux有利于迅速找到。
重点难点:理解重定向的作用,重定向符是操作系统实现的,不是程序实现的
重要代码:
def doCountByPurText(inputText):
words = re.findall(r'[a-z0-9^-]+', inputText.lower())
count(words)
功能5 此功能为选做题,如果完成正确得30经验值,如果不做得0经验值,不会倒扣分数。
你完成了所有功能,后面的博客、PSP等也都精心准备了,去食堂的路上心情大悦。坐下挠了挠手机访问cnblogs上的班级,却发现大家的作业也都非常优秀,自己并不突出,心下黯然。怎么才能更加杰出呢?一抬头,看到老杨老师和和邹欣老师正坐桌对面吃饭,你说出了自己的困惑。
老杨说,“精益求精,一步步榨出自己的潜力来,正是走向杰出的开始啊。”
你说,“老师你具体点呗。”
邹欣老师说,“这样,我想知道5个字母的单词中最频繁出现的是哪10个单词,top10,你怎么办呢?”
你一下就想到了,说了思路,应该blablabla。邹欣老师又问,“6个字母的单词中最频繁出现的是哪10个单词呢,top10?”
老杨追问,“6个字母的字母的单词中最频繁出现的是哪100个单词呢,top100?”
你问,“算法我想好了,性能估计也没问题,命令行参数老师怎么规定呢?”
老杨说,"你来规定,写个简单的文档,包括如何运行,给出运行实例的截图。"
"可变的参数就是(1)几个字母和(2)排行前多少是吧?没有问题。"
此时,你想起自己一直做作业还没有吃饭。肚子咕咕叫得声音如此之大,把你吵醒了。是赶紧去吃饭呢,还是做完这题再说?
功能实现
(以上每1经验值对应 1分。)
要求在同一个可执行程序中实现全部功能,而不是每个功能单独用一个可执行程序实现。
PSP