崩潰-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é)生們背單詞買的什么輔導(dǎo)材料。反正我們上學(xué)那會(huì),**《星火閱讀》**特別的火。記得當(dāng)時(shí)隨書還送一個(gè)紅色的塑料膜。書中英語(yǔ)單詞是紅色的其他文字是黑色的。背單詞的時(shí)候先把塑料膜蓋在書上,然后就只能看到翻譯和音標(biāo),從而起到自測(cè)英語(yǔ)的作用。一頁(yè)看完了取下塑料膜,再核對(duì)哪些單詞記錯(cuò)了。就這么一個(gè)無(wú)腦的功能,當(dāng)時(shí)的我們都覺(jué)得好犀利,誰(shuí)沒(méi)一本這樣的背單詞書,都不好意思出去裝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)容包含各種廣告,為了方便,我直接把它全部拷貝存在文本文檔中,類似右圖。
觀察保存的文本內(nèi)容,我們可以通過(guò) ***斜杠’/’***將單詞、音標(biāo)、翻譯進(jìn)行拆分。
生成測(cè)試題
我們準(zhǔn)備好了試題,怎么生成測(cè)試題呢?之前學(xué)習(xí)excel讀寫的時(shí)候,寫過(guò)一篇英語(yǔ)單詞自測(cè)的文章:
先生成單詞音標(biāo),然后用戶輸入翻譯,最后再D列追加正確的翻譯…
最近沒(méi)怎么學(xué)習(xí)web端的知識(shí),所以今天我們來(lái)寫一套自動(dòng)生成html測(cè)試題的練習(xí)吧!
準(zhǔn)備基礎(chǔ)html文檔root.html:
<
html
lang
=
"
en
"
>
<
head
>
<
meta
charset
=
"
UTF-8
"
>
<
title
>
清風(fēng)Python英語(yǔ)自測(cè)工具
title
>
<
link
rel
=
"
icon
"
href
=
"
basic/favicon.ico
"
>
<
link
href
=
"
basic/bootstrap.min.css
"
rel
=
"
stylesheet
"
>
<
link
href
=
"
basic/index.css
"
rel
=
"
stylesheet
"
>
<
script
src
=
"
basic/jquery.min.js
"
>
script
>
head
>
<
body
>
<
div
class
=
"
container
"
>
<
h3
class
=
"
title
"
>
清風(fēng)Python英語(yǔ)單詞自測(cè)工具
h3
>
<
table
class
=
"
table table-striped table-hover
"
>
<
thead
>
<
td
>
序號(hào)
td
>
<
td
>
翻譯
td
>
<
td
>
音標(biāo)
td
>
<
td
>
單詞
td
>
<
td
>
翻牌
td
>
thead
>
<
tbody
>
{content}
tbody
>
table
>
div
>
body
>
<
script
>
$
(
"button"
)
.
click
(
function
(
)
{
var
word
=
$
(
"."
+
$
(
this
)
.
attr
(
'line'
)
)
;
if
(
word
.
is
(
':visible'
)
)
{
word
.
slideUp
(
)
;
}
else
{
word
.
slideDown
(
)
;
}
}
)
;
script
>
html
>
其中content的內(nèi)容,為我們等下自動(dòng)生成試題…
其中引入的bootstrap、jQuery,都放在代碼同級(jí)的basic.html文件夾中…
Python代碼編寫
Python的代碼實(shí)現(xiàn)起來(lái)也比較簡(jiǎn)單,讀取用戶測(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
+=
"""
{0}
{3}
{2}
{1}
"""
.
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
OK,今天的內(nèi)容就到這里,如果覺(jué)得內(nèi)容對(duì)你有所幫助,歡迎點(diǎn)擊文章右下角的“
在看
”。
期待你關(guān)注我的公眾號(hào)
清風(fēng)Python
,如果覺(jué)得不錯(cuò),希望能動(dòng)動(dòng)手指轉(zhuǎn)發(fā)給你身邊的朋友們。
希望每周一至五清晨的7點(diǎn)10分,都能讓清風(fēng)Python的知識(shí)文章叫醒大家!謝謝……
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

