还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!
学英语广告
最近也许是刚开学的原因,不管是公众号,还是刷抖音,导出都能看到关于学英语、背单词的广告。
不知道现在学生们背单词买的什么辅导材料。反正我们上学那会,《星火阅读》特别的火。记得当时随书还送一个红色的塑料膜。书中英语单词是红色的其他文字是黑色的。背单词的时候先把塑料膜盖在书上,然后就只能看到翻译和音标,从而起到自测英语的作用。一页看完了取下塑料膜,再核对哪些单词记错了。就这么一个无脑的功能,当时的我们都觉得好犀利,谁
一本这样的背单词书,都不好意思出去装13啊!
今天,我们就使用Python来做一个英语单词自测工具!
需求分析
既然上面说了那么多的怀旧梗,那今天就仿照着从前的方式,做一个稍微高端一些的单词自测工具。
先来看看实现效果吧…程序输入你想测试的单词数量,然后系统自动生成html测试题,之后你就可以通过速记与查看来检测哪些单词你没记住喽…

找单词
背单词我们得先有单词吧?从百度找了一篇2019cet4英语单词表!

左图下载的word文档的内容包含各种广告,为了方便,我直接把它全部拷贝存在文本文档中,类似右图。 观察保存的文本内容,我们可以通过 斜杠’/‘
生成测试题
我们准备好了试题,怎么生成测试题呢?之前学习excel读写的时候,写过一篇英语单词自测的文章:

先生成单词音标,然后用户输入翻译,最后再D列追加正确的翻译… 最近没怎么学习web端的知识,所以今天我们来写一套自动生成html测试题的练习吧! 准备基础html文档root.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>清风Python英语自测工具</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">清风Python英语单词自测工具</h3>
<table class="table table-striped table-hover">
<thead>
<td>序号</td>
<td>翻译</td>
<td>音标</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的内容,为我们等下自动生成试题…
其中引入的bootstrap、jQuery,都放在代码同级的basic.html文件夹中…
Python代码编写
Python的代码实现起来也比较简单,读取用户测试数量,然后random获取随机测试内容,拆分数据后进行html内容组装,最终生成自测html练习题:
# -*- coding: utf-8 -*-
# @Author : 王翔
# @WeChat : King_Uranus
# @公众号 : 清风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 += """
<tr>
<td>{0}</td>
<td>{3}</td>
<td>{2}</td>
<td><div class='word line{0}'>{1}</div></td>
<td><button class='show'line='line{0}'>查看</button></td>
</tr>
""".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("请输入所需测试的单词数量(范围:1-100):")
while True:
try:
text_num = int(input())
if 1 < text_num < 100:
break
except ValueError:
pass
print("请仔细阅读输入范围!")
EnglishWordsTest()
关于文件
cet4的单词、涉及到的css、js基础模板,就不在文章中赘述了…
如果大家喜欢这个Python的英语测试题联系,公众号后台回复学英语即可获取整套代码及文件。
The End
OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点赞。
期待你关注我的公众号 清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
作者:清风Python
还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!的更多相关文章
- python服务端多进程压测工具
本文描述一个python实现的多进程压测工具,这个压测工具的特点如下: 多进程 在大多数情况下,压测一般适用于IO密集型场景(如访问接口并等待返回),在这种场景下多线程多进程的区分并不明显(详情请参见 ...
- Python开发环境Wing IDE搜索工具介绍
Wing IDE编辑器的搜索工具提供了一个基于友好GUI的搜索和替换工具. 某些情况下搜索可能会跨越整个文件,也有可能被限制到当前所选择的区域:可以区分大小写,也可以设置为不区分:可以被限制为只匹配整 ...
- python开发_configparser_解析.ini配置文件工具_完整版_博主推荐
# # 最近出了一趟差,是从20号去的,今天回来... # 就把最近学习的python内容给大家分享一下... # ''' 在python中,configparser模块提供了操作*.ini配置文件的 ...
- Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入
一.目标 实现在Linux下用pycharm调试工具/Python开发 Linux使用vi/vim工具写Python,缺点:调试不方便,无代码提示.跳转等诸多功能. Windows使用idle/pyc ...
- Linux发行版Ubuntu下的Python开发环境的配置
linux下的Python安装, 首先我们需要使用都Shell一系列的命令(前面的linux基础可不是白学的哦!) 1.更新软件安装源地址 sudo apt-get update apt-get,是一 ...
- 开源一个使用python和pyQT实现的产测工具
导语 之前给朋友友情开发的一个产测工具,现开源,有需要的朋友可以在这个基础上进行二次开发. 操作界面如下 主要特性 自动识别启动信息,然后进入产测写入状态 序列号和MAC地址自动按指定数目增加 每次操 ...
- 基于百词斩和扇贝单词的背单词APP软件测试
概述 背单词APP是非常受大学生青睐的手机应用,但它的发展尚未成熟,存在一些缺陷.我们决定深入地分析一组典型的背单词APP:百词斩(A产品).扇贝单词(B产品),寻找当前背单词APP中的提升空间.下面 ...
- 英语背单词app
乐词 √ 真人发音 词根词缀 小组计划及时复习 真人例句 墨墨 单词量测试做的特别好 扇贝 哈哈哈,没用过 百词斩 同样25个单词,我在乐词中背了20分钟,在百词斩中需要60分钟. 原因在于 要记单词 ...
- 利用python开发app实战
你说,我们的未来 被装进棺材,染不上尘埃 *** 我很早之前就想开发一款app玩玩,无奈对java不够熟悉,之前也没有开发app的经验,因此一直耽搁了.最近想到尝试用python开发一款app,goo ...
随机推荐
- Tomcat性能调优实战
今日帮朋友做了tomcat性能调优的实际操作,心得记录一下. 服务器:Windows2017 配置:CPU 4 内存 8G Tomcat8.0+版本. 压力测试工具:apache-jmeter-4.0 ...
- NOIP模拟测试2-5
该补一下以前挖的坑了 先总结一下 第二次 T1 搜索+剪枝 #include<cstdio> #include<iostream> #define ll long long u ...
- MinIO 参数解析与限制
MinIO 参数解析与限制 MinIO server 在默认情况下会将所有配置信息存到 ${HOME}/.minio/config.json 文件中. 以下部分提供每个字段的详细说明以及如何自定义它们 ...
- python 基础之 模块
Python 基础之模块 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 就是一个python文件中定义好了类和方法,实现了一些功能,可以被别的python文 ...
- Python 基础 三 反射
Python 基础 三 反射 今天我们先介绍一下反射这个概念,啥是反射?反射就是自己检测自己.在我们Python的面向对象中的反射是啥意思呢?就是通过字符串的形式操作对象相关的属性.python中的一 ...
- 【Swift】UNNotificationServiceExtension
一.简介 An object that modifies the content of a remote notification before it's delivered to the user. ...
- iOS定位--CoreLocation
一:导入框架 #import <CoreLocation/CoreLocation.h> 二:设置代理及属性 <CLLocationManagerDelegate> @prop ...
- [LC]747题 Largest Number At Least Twice of Others (至少是其他数字两倍的最大数)
①中文题目 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是数组中每个其他数字的两倍. 如果是,则返回最大元素的索引,否则返回-1. 示例 1: 输入: nums ...
- [LC]643题 Maximum Average Subarray I(子数组最大平均数 I)
①英文题目 Given an array consisting of n integers, find the contiguous subarray of given length k that h ...
- leetcode-242 判断两个字符串是不是 Anagram ?
题目描述 假设给定两个字符串 s 和 t, 让我们写出一个方法来判断这两个字符串是否是字母异位词? 字母异位词就是,两个字符串中含有字母的个数和数量都一样,比如: Example 1: Input: ...