Thank God It’s Friday!
again!
又到了惬意的周末了,祝大家周末愉快,闲暇之余记得练习编程技能啊!另外,上海的朋友可以安心在家写代码了,因为明天后天下雨。
一名光荣的天气播报员尽到了自己的义务! 收收心,看看本周的为大家准备的题目。
123321是一个非常特殊的数,它从左边读和从右边读是一样的,我们称这样的数为回文数。
给你一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n(5<=n<=54)。 按从小到大的顺序输出满足条件的整数。
>>>n = 52
>>>func(n)
899998
989989
998899
欢迎大家积极投稿,我们将选出优秀的解答在下期展示。
这道题实现容易,使用正则表达式和 Counter 就可以轻松完成。
# 引入 Counter 和 re
from collections import Counter
import re
打开并读取文件,取出所有单词,并全部转换为小写字母。
with open(r'Jane Eyre.txt','r') as f:
all_words = f.read().lower()
虽然通过正则可以忽略大小写进行匹配,但为了方便之后统计重复次数,我们还是强制都转为小写。
使用 re 模块匹配所有单词
rule = re.compile(r'\w+')
words = re.findall(rule,all_words)
最后使用 Counter 计数并统计
counter_words = Counter(words)
common_words = counter_words.most_common(10)
关于 Counter 的用法可见上期【编程课堂】计数器 Counter
最后整理一下输出这样的结果
Jane Eyre.txt
=======================
1 the 7845
2 i 7255
3 and 6625
4 to 5226
5 a 4468
6 of 4366
7 you 2993
8 in 2767
9 was 2525
10 it 2413
大家可以看到,结果没有太多参考性,因为词频最高的肯定是一些人称代词、冠词、介词等无意义的词汇,好在上期解答中 @LDJ 小伙伴精心去除很多无意义的词汇,然后又生成了词云图,值得大家参考。
代码地址:
https://github.com/NyanCat12/CrossinWeekly/blob/master/NovelWordCount.py
同样是关于 Jane Eyre 的文章分析,生成的词云图为: