前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【每周一坑】统计英文小说词频

【每周一坑】统计英文小说词频

作者头像
Crossin先生
发布2018-04-17 14:42:45
8370
发布2018-04-17 14:42:45
举报

Thank God It’s Friday!

又到周五啦!眼看就要忙完一周的学习和工作,又可以出去浪咯。

然而,只有我们依旧无趣地在此刻发干货文,提醒着你有没有写新的代码?有没有了解新的语法?硬生生给你五彩斑斓的周末生活蒙上一层阴影。每每想到这,我就觉得,这档子事儿还真是……

干得漂亮!

不多说,先来看这周的题目。上周解答在后半部分。

统计英文词频

编程教室在之前发过一篇 数据分析:当赵雷唱民谣时他唱些什么?,里面对赵雷的几十首歌词做了分词、去冗余、统计的操作,得出了他在歌词中最喜欢用的词汇。

本周我们的题目与这个类似,不过要简单许多。

要求:
  • 统计一部英文小说里单词的出现次数(忽略大小写)
  • 按出现次数显示最高的 100 个单词
  • 【附加题】多统计几个不同作家的作品,挑选一些特征词汇的次数画在图表上,展示不同作家的风格区别。
示例:
代码语言:javascript
复制
Jane Eyre
----------------
1.  the   7406
2.  I     7245
3.  and   6346
4.  to    5155
5.  of    4331
6.  a     4314
...

因为英语天生自带分词,所以要比中文好处理。另外透露下,今天一同发送的 编程课堂 里,有解答这题的关键技巧。

我们提供了几部小说作为测试数据,公众号里回复 小说 可获取下载地址。

依旧欢迎大家积极投稿~

Talk is cheap. Show me the code.

双色球选号器解答

这道题还是比较简单的。就是如何从一定的范围中随机地选出几个数。

我们的课程中有介绍过 random.randint 方法,可以产生一定范围中的一个随机整数。所以你可以调用多次该方法,获取到足够多的数。当然考虑到有可能出现重复,需要判断随机出来的值是否有效。

然而这并不是一个好办法。

random 模块中其实有现成的方法:sample。它的作用就是从序列中随机挑选一些元素。因此,选取红球只需要:

代码语言:javascript
复制
import random
# 1~33的列表
red_pool = range(1, 34)
red = random.sample(red_pool, 6)

蓝球,可以一样用 sample,或者 random 的另一个方法:choice。它的作用是从序列中随机挑选一个元素:

代码语言:javascript
复制
# 1~16的列表
blue_pool = range(1, 17)
blue = random.choice(blue_pool)

这就大功告成了!

如果想显示的好看些(py2):

代码语言:javascript
复制
print '红球:',
red.sort()
for r in red.sort():
    print '%02d' % r,
print
print '蓝球: %02d' % blue

上一期的答案里,@王任 同学用一行代码搞定了选号:

代码语言:javascript
复制
import random 
[random.randint(1, 16), sorted(random.sample(range(1, 34), 6))]

另一位同学 @张良 完成了专注买彩一百年的代码,参见:

https://github.com/lightopen/lottery/blob/master/lottery.py

然而,当我今天第一次运行他的代码时,结果是:

代码语言:javascript
复制
100 years late, you spend 73000, and earn 3031520

我想这是写错了吧。后来又 run 了许多次,发现并不是……

确实是我错过了 300 万。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 统计英文词频
    • 要求:
      • 示例:
      • 双色球选号器解答
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档