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

Python是怎样生成毛概题库的?

1. 思路

要生成题库,我们首先观察一下题库的样子

通过观察,筛选出我们需要的信息,这里我们只需要题目类型,题干,正确答案,选项数,选项内容这几项。

所以大致提取过程是这样的:

读取excel文件获取题库

格式化题库(让题目变成可以处理)

按照一定格式写入word文件

2. 需要的库

人生苦短,我用Python。Python之所以简单,不只是英文它简单的语法,而且还有大量的第三方库可以使用。

原来题库是excel文件,Python当然有读取excel的库,

在写入word文件时候,需要安装

3. 定义题目分类

通过看题库文件,发现题目分为5种类型:

,,,,。

所以我们预先定义好,用数字表示,这样之后处理方便很多。

4. 获取所有题库的文件目录

因为题库分为好多章节,每个章节都是单独一个excel文件,我把它们放到一个指定的文件夹下:

接下来指定所有题库的目录,获取所有的题库文件。另外我这里使用sorted排序,保证按照章节顺序读取。排序是依据每个章节文件前的数字排序,即指定排序的key值为数字,获取章节的key的函数是get_key(),通过正则表达式将章节文件的前面的数字读取出来。

这样xl_list即为所有输入文件的路径。如下图:

然后就可以使用xlrd愉快的读取了

5. 定义问题类

在读取之前我这里先定义一个问题类,读取到信息在类中处理。这样有利于代码的封装,之后如果有要修改的也比较方便。这里主要做的是根据题目类型保存正确答案。

比如判断题给出的答案是A或B(对与错),这样不方便阅读,把他变成正确或者错误就会好点(choose里面存放就是正确和错误)。

以及就是简单题没有选项,而传入参数chooses的第一个元素为答案,所系我们直接把答案设置为选项的第一个元素,并且不设置答案(是将数组用空格连接起来)。

代码如下:

6. 格式化读取题库

下面就是正式读取题库了,代码如下图。通过xlrd依次打开每个章节的题库excel文件。在一个excel文件中,有多个组成。每一个sheet就可以抽象成一个二维数组,知道要读取的数组的坐标在哪,就可以读取了。在读取文件中只有一个sheet, 我们就选取第一个(程序员的第一个下标是0)。 读取单元格的api为,读取完成后是一个sheet对象,再使用获取实际的值。

读取excel一行即为一道题,我们就生成一个quesion对象,然后把它存放到一个这个章节全部题目的列表中。

当读取完一个章节的文件后,我们按照文件的类型排序(还记得之前用数字表示下标么?,这样排序简单点)。再将该章节的所有习题列表以文件名为key放入一个字典中。

我们可以看下all_result中的内容

7. 生成word文件

代码在如下图,不要觉得很长,注释就占了一半啦。拆开看就是写入doc,首先写入标题,接下来依次写入题目的标题,然后判断题目的类型,依次写入。这里我们使用传入参数判断是否显示答案,来控制选项结尾的符号,为制表符,为换行。使用filter来控制要输出的题目类型。默认全都显示,但是如果有些题我们不想显示的话,那么传入的时候就指定自己想要输出的题目类型。

下面的代码就是依次将处理好的题库字典文件生word格式文档。在最后并且保存好文件。

通过gen_doc指定的参数我们就可以控制生成的文档内容

代码在github上,如果觉得好的话烦请给个star。

有什么意见或者建议欢迎留言告诉我们。

看完,记得点个"好看"鸭!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券