【每周一坑】自动翻译 | 【解答】单词本

上次我们挖了一个系列坑:【每周一坑】单词本

第一期的目标,是实现控制台下的单词录入及保存功能。各位都有实现吗?在本文后半段,我们会来做具体分析。

在这之前,先给出新的目标:

自动给添加的单词增加翻译、音标等信息

效果演示:

提示:翻译功能可以通过网上的翻译 API 实现,你所要了解的就是如何发起网络请求,以及如果对返回结果进行处理。这也算是基本的爬虫操作。

接口建议使用金山词霸的查词接口
http://open.iciba.com/index.php?c=wiki&t=cc
简单申请一下 key 就可以使用,还没限制。当然你也可以考虑有道或者百度翻译的接口。具体使用就是你们要解决的问题了,下次我们再来具体说。

关于网络请求,可以看这篇 requests 的介绍:《requests - 这个男人让你的爬虫开发效率提升8倍》,或在公众号(Crossin的编程教室)里回复关键字 查天气

详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

期待各位同学提交解答,更期待你能完成整个系列。

提交代码可以使用 paste.ubuntu.com 或 

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。

往期问题可通过公众号菜单栏“课外辅导”栏目中进入查看。


【解答】单词本

上次的问题,可以划分成几个部分:

  1. 通过命令行输入单词。这个用 input 就可以。

  2. 保存文件并记录添加的日期。当前日期可以从 datetime 模块的 datetime.date.today() 获取,转成字符,拼接起来后,通过基本的文件读写进行保存。

  3. 判断单词已存在。用 in 来判断。

  4. 提示现有单词总数。用列表的 len 方法。

  5. 程序可重复运行。这个类似之前的“猜数字”程序,把程序放在一个 while 循环里

综合起来:

# coding: utf8
import datetime f = open('words.txt', 'a+') f.seek(0) lines = f.readlines() words = [line.split('      ')[0] for line in lines if line.strip()]

while True:    word = input('请输入你要记录的单词(直接回车退出程序):\n').strip()
   if not word:
       break    if word in words:        print('单词已存在')
   else:        words.append(word)        t = datetime.date.today()        line = word + '      ' + str(t) + '\n'        lines.append(line)        f.write(line)        f.flush()    print('已记录', len(words) ,'个单词/词组\n') f.close()

这里还需要注意的是,我用 6 个空格字符作为单词和时间的分割,你也可以用其他的方式,但注意要避免和单词字符本身产生冲突。一开始用 a+ 模式是为了避免第一次单词文件不存在时的报错。中间变量 words 是一个列表,用了存储所有已记录的单词。 strip() 方法是为了去除字符串前后多余的空白字符。每次写入之后调用 flush(),避免程序意外结束时,未保存的内容丢失。

上次有 5 位同学提交了代码:
🌜月城mooncity🌛、LY💤、帆、张赛、Nttzl

其中 LY💤 同学的代码还实现了查询和删除的功能。感谢几位同学的参与。

其他还没有完成的同学,看了本次的解答后,建议也自己动手做一遍。然后跟着我们一起继续往下做。毕竟在后台跟我咨询说学完基础不知道做什么的同学绝对不止 5 个人,但为何有了项目的时候却并没有人动手呢🤔

期待在下一期中看到你的代码!

(0)

相关推荐

  • 第一次作业

    码云项目地址:https://gitee.com/lonelyCloud/wc 个人psp: PSP阶段 预估耗时(分钟) 实际耗时(分钟) 计划 10 10 .预估任务所需时间 10 10 开发 1 ...

  • Linux Shell 之 对文件中的行、单词、字符进行迭代

    在进行文本文件进行处理时,对文件件中的行.单词.字符进行迭代和遍历是非常常用的操作.而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行.单词.和字符进行迭代的基本方法. ...

  • 【每周一坑】数据库 +【解答】自动翻译

    我们的系列坑 单词本 今天继续第3期. 上次我们的目标是加入自动翻译,需要用到网络接口,可以看作是一个最简单的爬虫.详细方法稍后分析,先来谈谈今天的任务: 使用数据库存储单词数据 交互效果与之前相同, ...

  • 【每周一坑】单词本 +【解答】三国演义中谁的存在感最强

    "每周一坑"这个系列在本教室的文章中,阅读量不算高.但我屡次在和读者沟通时听到说"我都有跟着每周一坑里的题在做".这是个有意思的普遍现象:内容的价值和传播度并不 ...

  • 【每周一坑】疯狂的小母牛 +【解答】数据库

    之前我们的"每周一坑"栏目挖了一个"单词本"的系列.不过看起来大家都这种中长线项目兴趣不大啊--最近的一期,直到最近几天才有一位同学提交了解答. 所以我决定暂停 ...

  • 【每周一坑】三国演义中谁的存在感最强 +【解答】暴力计算圆周率

    自然语言处理(NLP)是人工智能的一个重要领域.在对中文做自然语言处理的时候,一个很基础的操作就是分词:因为中文不像英语有现成的单词划分,需要将汉字序列切分成一个个单独的词,以便于后续的处理和分析. ...

  • 【每周一坑】暴力计算圆周率 +【解答】生成/识别二维码

    我们之前有出过一些和概率相关的问题.比如 几道有趣的概率题.三门问题.田忌赛马.蜥蜴流感与贝叶斯定理.我讲过,用计算机程序来解编程题有个很有意思的思路,就是暴力解法.就是利用电脑的计算能力,去模拟大量 ...

  • 【每周一坑】生成/识别二维码 +【解答】新个税计算器

    二维码的本质是将文本信息转化成符合一定格式的平面图片信息,以便于计算机/手机通过摄像头或扫码设备快速而准确地识别,实现信息的传递.从某种角度来说,二维码可算是打通次元壁的途径,将互联网与现实世界更便捷 ...

  • 【每周一坑】新个税计算器 + 【解答】数字水印

    根据全国人大常委会关于修改个人所得税法的决定,10月1日起,纳税人的工资.薪金所得将适用新的费用减除标准(通常说的"起征点"),由每月3500元提高到每月5000元,并适用新的个税 ...

  • 【每周一坑】图像的指纹:数字水印 + 【解答】鸡兔同笼

    曾经有过这样的新闻:某公司的员工将内网论坛上的言论截屏发布到互联网上,引发了热议.于是公司通过截图定位到了员工的身份,将其开除. 有人可能好奇,仅凭截图就能知道是谁干的吗?这里就是用到了"数 ...

  • 【每周一坑】鸡兔同笼 +【解答】房贷计算器

    本期的题目,来自一本古老的书籍<孙子算经>,是一道很经典的数学题: 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? 翻译过来就是: 有若干只鸡和兔同在一个笼子里,从上面数,有35 ...