python docx 复制_python制作单词抽测题(word版)(一)
需求:
作为双语教学的老师,学科单词一直是教学的重要一关
之前抽测学生都是用的自己做的word模板,打印出来一张纸上能切成三个人的试题:
但是久而久之有的班级监管不力的话抄袭的现象也会出现,而如果针对每个人调换顺序的话工作量太大,可操作性和扩展性也太弱。
而且手头有这样的单词表(excel格式),于是动了python批处理脚本自动生成的心思
目标是生成有每个人名字,并且每个人的抽测单词是从单词表里随机抽出的。
手头的资源:
学生名单:
开工:
因为需要用python最后输出word方便打印,参考网上使用了python-docx库
使用pip安装docx库(win使用cmd输入命令,mac使用终端terminal输入):
pip install python-docx
docx库使用方法参见了这两部分:
python-docx 使用教程www.cnblogs.comhttps://python-docx.readthedocs.io/en/latest/python-docx.readthedocs.io
然后为了便于操作,将现有的单词表和名单都存为csv格式
思路大致如下:
开始码字:
#引入所用库:
from docx import Document
import random
import csv
#声明一下变量
voca_en = []
voca_cn = []
names = []
#读单词表文件(已存为voca.csv),将每一行的第一列(英文单词)增加入voca_en列表,第二列(中文意思)增加入voca_cn列表
csv_voca = csv.reader(open('voca.csv',encoding='utf-8'))
for row in csv_voca:voca_en.append(row[0])voca_cn.append(row[1])
#读取名单数据(存为G81.csv),将名字存入names列表中
csv_names = csv.reader(open('G81.csv',encoding='utf-8'))
for row in csv_names:names.append(row[0])
#新建一个word文档对象,名为doc
doc = Document()
#开始一个一个提取名字,并写在前面成为一段
for name in names:nametitle = doc.add_paragraph()nametitle.add_run('Name:' + name)
#(仍在循环内)画一个2列10行的空表格,样式为"所有边框"
table = doc.add_table(rows=10, cols=2,style='Table Grid')
#(仍在循环内)把中文意思的列表复制一下(直接用voca_cn_test = voca_cn赋值语句只会在内存中的这个列表赋予两个名称,一会不放回取出的时候实际voca_cn也会同等收到影响,必须另外复制一个完全独立的才行)
voca_cn_test = list(voca_cn)
#(仍在循环内)开始不放回随机抽取单词(中文意思),使用的是列表的pop方法;每次取出之后待抽单词列表的长度都会变化,所以随机数的取值范围也要时刻更新
for a in range(0,10):cell= table.cell(a,0)x = random.randrange(len(voca_cn_test)-1)print(len(voca_cn_test))cell.text = voca_cn_test.pop(x)
#(仍在循环内)为了好看,每循环完成一个人的单词表,就在shell里面提示一下(删去无影响)
print('finished quiz:'+ name)print('==================================')
#最后所有人名都完成了循环,需要将这个docx文件保存一下(运行过程中一直都在内存中,保存后才能看得到)
doc.save('quiz.docx')
跑一遍看看效果
基本完成了预想的样子,格式什么为了方便打印还需要调整一下(比如名字离上一个人的quiz太近了,打印出来不好裁剪),不过都还比较好搞。
还有很多不足,比如语句冗余还是很多;方法应该还有更高效的,不过目前的数据量较小基本不用考虑运行时间问题。
下一步的升级希望能和学生的成绩水平挂钩,根据平常类似单词考试的成绩来提高或者降低难度(通过调整汉译英和英译汉的比例),简单来说可以直接拿平时成绩的分数换算为汉译英/英译汉的比例从而调整抽提,更深的学生成绩数据存储可能需要数据库知识了吧,还需要恶补。
自己从身边发现的需求然后摸石头过河做的,知乎大佬们见笑了。
欢迎各种指导~
python docx 复制_python制作单词抽测题(word版)(一)相关推荐
- python docx 复制_99%的人都不知道的Python整理文件方法,效率提升100倍
现在人们经常要去下载或者接收一些文件. 比如说同事传来的文档,自己建立的文件,想看的电影等等,那大家都会怎么处理这些文件呢? 科研工作者.学生们可能需要阅读大量的文献,我们也需要阅读很多的电子书等等, ...
- 查python的软件_Python制作天气查询软件【python实战必学】
在这里插入图片描述 以前,公众号分享了如何使用 PyQt5 制作猜数游戏和计时器,这一次,我们继续学习:如何使用 PyQt5 制作天气查询软件. 如需获取源代码和 exe 文件,请在微信公众号Pyth ...
- python课堂点名_Python制作课堂点名器,原来还能这么玩!
Python制作课堂点名器,原来还能这么玩! 作者:PHPYuan 时间:2019-03-19 03:40:36 我们用的是Python中的Tkinter模块,我们大概做的功能有三个:随机点名 惩罚 ...
- python测试代码_python英语单词测试小程序代码实例
这篇文章主要介绍了python英语单词测试小程序代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 爬取了扇贝英语网,并制作了一个英语单词测试的 ...
- python翻转函数_Python翻转单词顺序
首先需要写一个reverse函数,把任何输入的字符串完全翻转.然后从前往后依次遍历新字符串,如果遇到空格,就把空格前的字符串用reverse翻转,添加空格,继续遍历.需要注意的是,如果新字符串结尾不是 ...
- python注册系统_Python制作简易注册登录系统
Python制作简易注册登录系统 这篇文章主要为大家详细介绍了 Python 简易注册登录系统的制作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Python 是一种面向对象.解释型计算机程 ...
- python仪表盘绘图_Python制作仪表盘图,比Excel快速N倍
之前写过一篇用Excel制作仪表盘图的教程高端大气上档次的Excel图形-仪表盘主要是利用环形图和饼图分别制成半圆环和指针,制作过程较为繁琐,且指针准确度不易掌控,这里我们用Python中的pyech ...
- python 仪表盘数据显示_Python制作仪表盘图,比Excel快速百倍
之前写过一篇用Excel制作仪表盘图的教程Excel可视化之精美仪表盘,主要是利用环形图和饼图分别制成半圆环和指针,制作过程较为繁琐,且指针准确度不易掌控,这里我们用Python中的pyecharts ...
- python画小兔子_python制作“小兔子和Bun小游戏
说明 python版本:3.5.4 pygame版本:1.9.3(pip安装即可) 愉快地开始 Step1:你好,兔子 效果: Step2:添加背景 首先载入所需的图片:其次依次通过x和y进行循环,并 ...
最新文章
- SAP PM技术对象的功能
- 检测到目标主机可能存在缓慢的HTTP拒绝服务攻击
- asp.net源碼坊論壇上線
- Arduino产生PWM的3种方法
- 阿里云mysql创建多个用户_阿里云MySQL创建指定用户访问指定表
- 木桶布局 原理与实现
- 解决iframe在ios中无法滚动的bug
- Vue.JS学习笔记
- 问题 E: 货币兑换 山东科技大学OJ c 语言
- hackrf+portapack 组装上手体验记录
- 视频录制软件进行电脑屏幕录像的使用方法
- html5图片在线剪辑,Web端裁剪图片方法
- 模拟与仿真两个词的区别
- Okra框架(三) 搭建HTTP服务器
- Oracle如何保持一致读?
- OMAP3530资料
- 尼日利亚4g频段_4G全球频段划分及主要运营商对应表2015版.xls
- imperva agent 的重新注册
- CANN训练营第三季_昇腾CANN算子精讲课_TBE算子Sinh开发笔记_算子开发(二)
- 软考高级 真题 2010年下半年 信息系统项目管理师 案例分析
热门文章
- [Vue.js] 深入 -- 案例 - 购物车
- 用python内置函数算复杂度吗_Python减少代码量的两个内置函数
- body curl命令测试post_HTTP接口调试利器!4.8万Star的HTTP命令行客户端!
- 交换二叉树中所有结点的左右子树的位置
- 输入框禁止输入emoji标签
- Netty(三) 什么是 TCP 拆、粘包?如何解决?
- django mysql settings
- 关于如何控制一个页面的Ajax读数据只读一次的简单解决办法!
- 下拉菜单(含有阻止事件冒泡)
- Android类参考---Fragment(五)