還在用背單詞App?使用Python開(kāi)發(fā)英語(yǔ)單詞自測(cè)工具,助你逆襲單詞王!
崩潰-ing

西安已經(jīng)下了兩周雨了,大家以為到頭了么?不僅僅才是開(kāi)始,未來(lái)的一個(gè)月還要接著下,簡(jiǎn)直崩潰啊!
昨天被逼著去加班,所以早期發(fā)了一篇娛樂(lè)帖,還好沒(méi)有掉粉…要謝謝各位的包容啊,哈哈。
學(xué)英語(yǔ)廣告
最近也許是剛開(kāi)學(xué)的原因,不管是公眾號(hào),還是刷抖音,導(dǎo)出都能看到關(guān)于學(xué)英語(yǔ)、背單詞的廣告。
不知道現(xiàn)在學(xué)生們背單詞買(mǎi)的什么輔導(dǎo)材料。反正我們上學(xué)那會(huì),《星火閱讀》特別的火。記得當(dāng)時(shí)隨書(shū)還送一個(gè)紅色的塑料膜。書(shū)中英語(yǔ)單詞是紅色的其他文字是黑色的。背單詞的時(shí)候先把塑料膜蓋在書(shū)上,然后就只能看到翻譯和音標(biāo),從而起到自測(cè)英語(yǔ)的作用。一頁(yè)看完了取下塑料膜,再核對(duì)哪些單詞記錯(cuò)了。就這么一個(gè)無(wú)腦的功能,當(dāng)時(shí)的我們都覺(jué)得好犀利,誰(shuí)沒(méi)一本這樣的背單詞書(shū),都不好意思出去裝13啊!
今天,我們就使用Python來(lái)做一個(gè)英語(yǔ)單詞自測(cè)工具!
需求分析
既然上面說(shuō)了那么多的懷舊梗,那今天就仿照著從前的方式,做一個(gè)稍微高端一些的單詞自測(cè)工具。
先來(lái)看看實(shí)現(xiàn)效果吧…程序輸入你想測(cè)試的單詞數(shù)量,然后系統(tǒng)自動(dòng)生成html測(cè)試題,之后你就可以通過(guò)速記與查看來(lái)檢測(cè)哪些單詞你沒(méi)記住嘍…
找單詞
背單詞我們得先有單詞吧?從百度找了一篇2019cet4英語(yǔ)單詞表!
左圖下載的word文檔的內(nèi)容包含各種廣告,為了方便,我直接把它全部拷貝存在文本文檔中,類(lèi)似右圖。
觀察保存的文本內(nèi)容,我們可以通過(guò) 斜杠’/‘
生成測(cè)試題
我們準(zhǔn)備好了試題,怎么生成測(cè)試題呢?之前學(xué)習(xí)excel讀寫(xiě)的時(shí)候,寫(xiě)過(guò)一篇英語(yǔ)單詞自測(cè)的文章:
先生成單詞音標(biāo),然后用戶(hù)輸入翻譯,最后再D列追加正確的翻譯…
最近沒(méi)怎么學(xué)習(xí)web端的知識(shí),所以今天我們來(lái)寫(xiě)一套自動(dòng)生成html測(cè)試題的練習(xí)吧!
準(zhǔn)備基礎(chǔ)html文檔root.html:
其中content的內(nèi)容,為我們等下自動(dòng)生成試題…
其中引入的bootstrap、jQuery,都放在代碼同級(jí)的basic.html文件夾中…
Python代碼編寫(xiě)
Python的代碼實(shí)現(xiàn)起來(lái)也比較簡(jiǎn)單,讀取用戶(hù)測(cè)試數(shù)量,然后random獲取隨機(jī)測(cè)試內(nèi)容,拆分?jǐn)?shù)據(jù)后進(jìn)行html內(nèi)容組裝,最終生成自測(cè)html練習(xí)題:
# -*- coding: utf-8 -*-
# @Author ? : 王翔
# @WeChat ? : King_Uranus
# @公眾號(hào) ? ?: 清風(fēng)Python
# @Date ? ? : 2019/9/16 01:14
# @Software : PyCharm
# @version ?:Python 3.7.3
# @File ? ? : EnglishWordsTest.py
import os
import random
import re
class EnglishWordsTest:
def __init__(self):
self.root_path = os.path.dirname(os.path.realpath(__file__))
with open(os.path.join(self.root_path, 'basic', 'cet4.txt'), encoding='utf-8') as f:
_all_words = f.readlines()
self.html = ""
self.clean_data(random.sample(_all_words, text_num))
def clean_data(self, data):
exam_data = list(map(lambda x: re.sub("\s", '', x).split('/'), data))
for num, line in enumerate(exam_data, start=1):
self.html += """
""".format(num, *line)
with open(os.path.join(self.root_path, 'basic', 'root.html'), encoding='utf-8') as f:
data = f.read()
with open(os.path.join(self.root_path, 'exam.html'), 'w+', encoding='utf-8') as f:
f.write(data.replace('{content}', self.html))
if __name__ == '__main__':
print("請(qǐng)輸入所需測(cè)試的單詞數(shù)量(范圍:1-100):")
while True:
try:
text_num = int(input())
if 1 < text_num < 100:
break
except ValueError:
pass
print("請(qǐng)仔細(xì)閱讀輸入范圍!")
EnglishWordsTest()
關(guān)于文件
cet4的單詞、涉及到的css、js基礎(chǔ)模板,就不在文章中贅述了…
如果大家喜歡這個(gè)Python的英語(yǔ)測(cè)試題聯(lián)系,公眾號(hào)后臺(tái)回復(fù)學(xué)英語(yǔ)即可獲取整套代碼及文件。
The End
本文來(lái)自“清風(fēng)Python”公眾號(hào)
python
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。