首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

python生词复习本

概况

-----------------------

由于最近学英语了,所以必然要记很多生词。拿一个本子来当生词本是个不错的主意,但是记了一段时间后发现复习起来不是很方便,再加上本人的字迹也不是那么的美观,而且平时我也是把更多时间对着电脑的,所以想着不如干脆在电脑上弄一个生词本,还是带复习功能那种的。由此,就打算用python来写一个生词本。

生词本的功能很简洁:平时有难记的单词和短语就录入数据库中,有一些好的句子也可以录入。可以选择复习模式:顺序复习或者乱序复习,以中译英或英译中的方式复习,即电脑显示中文或英文,我用键盘来输入答案,这样也能对单词的拼写更熟悉。

说说每个功能要如何实现————

- 首先得创建一个数据库的数据表,我使用的数据库是mysql,在python中使用的是sqlalchemy相关的模块。数库表中每一条数据的属性为:id,英文,中文,类型(单词或句子),词性(动词或名词等等)。有这几条其实就足够了,当然我额外添加了:录入的时间和是否掌握 这两个属性。

- 录入单词的功能很简单,先让我输入单词英文,然后输入中文意思,输入它的词性,然后给它自动分配id就能录入数据表中了。这个功能遇到了一个小问题就是,当我删除了表中某一条数据时,会出现空缺的id,但新录入的数据自动分配id时不会使用那个空缺的id,而是不断的从最新的id数递增。所以我写了几行代码判断是否有空缺的id,有的话就把该id分配给新数据,否则就沿用表中最大的id数加1。

- 显示生词本中所有的单词,之前访问数据库并得到数据表中所有的单词数据(即数据类型为word单词的数据),得到一个单词列表,用for循环遍历,依次显示出来就可以了。

- 复习功能有顺序和乱序复习。首先都是要从数据表中得到所有单词的列表。顺序复习就从头开始遍历,每一次都显示一条数据的英文(或中文),然后我就输入它的中文(或英文),如果和答案一样,就显示"正确",否则显示错误,并显示正确答案。乱序模式也是相似的逻辑,只不过就不从头遍历整个单词列表了,而是通过得到随机的索引号,来读取单词列表中随机的一个单词来进行复习,这就用到了random中的randint模块了。当答对了一个单词,要把该次从单词列表中去除,接着复习下一个。从列表中取出可使用list.pop(index),index为该单词的索引号。此外,我选择了让单词本来随机决定,是中译英还是英译中,两种模式的随机选择,也是通过randint来实现了。在英译中的时候,需要判断我输入的中文意思是否正确。由于一个单词往往有很多个中文意思,所以我使用了字符串的split(',')的方法以逗号把所有中文意思分割成列表,再判断我输入的意思是否等于列表其中一个,若匹配则输入正确。

- 查询生词本单词的功能,即先输入一个英文单词,或输入一个中文意思,然后从数据表中取出包含该英文单词或该中文意思的数据,若有则显示出来,没有就提示不存在该数据。

- 删除生词本中某个生词,即输入一个单词,然后从数据表中取出该词,若存在则提问是否确定删除,输入y来确认删除该数据;若不存在则提示不存在该数据。

- 英文句子的录入,显示,复习,查询和删除功能与上述几个都是类似的,照着该逻辑做出来就好了。

由于没有多大的需求和时间,所以并不打算做一个有gui界面的程序啦,平时就在黑漆漆的窗口下运行来复习单词就好了。

- 以下就是程序的界面

- 以下是复习单词的功能,弄点简单的词汇来实验 ----

使用了一周多了,也录入了不少词汇,以下是录入的单词短语 ----

以下是代码,代码量还算可以,四百多行。在质量方面还需要很多改善,以后有时间再完善下吧。

虽然界面不美丽,不过还是挺有用的,每天在电脑上复习一下单词,感觉不错。

好好学习,天天向上^_^

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180430G1796F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券