起由:

前一阵子想要刷一刷国二Python的题库,千方百计找到题库之后,打开一个个word文档,发现一题一题阅读很麻烦,而且答案就在题目的下面,阅读题目的时候想自己做出题目却又总能不经意看到答案,甚烦!遂开始敲代码,我要一题一题做,还不能看见答案。

着手:

word文档是这样的:

观察word内容,每道题目的题目内容和题目答案都是一样的格式,包括缩进、字体等等,那么就可以使用Python对文件的读操作,浏览文档的内容,在适当的内容区域设置输入,将输入与答案进行判断是否相等,即可实现简单的刷题功能。

Python默认不支持直接打开doc文件并读写,但是可以打开docx文件,但是docx文件必须是经过Word程序制作或转换而来的。如果文件太多,一个一个手动转化太麻烦,就要使用程序对文件批量转化,使用win32com模块可以使用此功能。

话不多说,放码!(部分思路在代码中注释):

首先批量将doc转化为Python能够打开并读写的docx文档:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# File : 批量将doc转换为docx.py

# Author: roohom

# Date : 2018/9/17 0017

'''

使用Word批量将doc转化为docx

- 调用win32com,打开Word应用程序

- 打开doc

- 保存成docx

- 关闭word

- 转入下一个doc并重复上述操作

'''

from win32com import client as wc

def doSaveAas():

word = wc.Dispatch('Word.Application')

#延时5秒钟,防止由于系统配置原因还没打开Word就进行下一步程序

#time.sleep(5)

doc = word.Documents.Open(r'{0}'.format(word_name)) # 目标路径下的文件

doc.SaveAs(r'{0}'.format(word_docx_name), 16) # 转化后路径下的文件,16表示docx格式

doc.Close()

word.Quit()

if __name__ == '__main__':

k = 1

i = 3

j = 3

while True:

word_name = "D:\学习区\Python\python二级考试试题\选择题\python二级考试试题{0}.doc".format(i)

word_docx_name = "D:\学习区\Python\python二级考试试题\选择题\python二级考试试题{0}".format(j)

doSaveAas()

i += 1

j += 1

print("已完成{0}个word从doc到docx的转换".format(k))

k += 1

结果是这个样子的:

再进行我们的正题,开始刷题:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# File : MyDemo.py

# Author: roohom

# Date : 2018/9/17 0017

'''

刷题脚本

- python对文件读写等操作的强大功能

- 使用docx模块对docx文档进行读写

- python不支持直接打开并读取word文档,因此需要使用方法将doc转化为docx,方法详见doc_to_docx.py

- 原理

- 打开经转化后的docx文档,并逐行读文件内容

- 判断是否读到“正确内容”语句

- 是,设置用户输入,提示输入用户的答案

- 否,继续读操作

- 比较用户的答案与正确答案是否一样

- 是,输出正确提示

- 否,输出错误提示

- 继续下一题,重复上述操作

- 拓展延伸

- 可以在程序主入口处设置用户输入,输入用户想要打开的路径、文件,程序根据文件名、路径等进行上述操作

- 可以根据用户输入情况设置加分减分,并根据全部答案情况,分析错误题目,后续将错题重修整理收集,反馈给用户

'''

import docx

'''

字符串比较的一种麻烦方法:

def comparison(a, b):

ib=0

for ia in range(len(a)):

if ord(a[ia:ia+1])-ord(b[ib:ib+1])==0:

ib=ib+1

if ib==len(b):

print('你的答案正确!')

else:

print('你的答案错误!')

break

'''

def comparison(a, b):

if a == b :

print("你的答案正确!")

else:

print("你的答案错误!")

if __name__ == '__main__':

file = docx.Document(r"D:\学习区\Python\python二级考试试题\选择题\python二级考试试题01.docx")

print("==================全国计算机二级考试之Python刷题==================")

for p in file.paragraphs:

m = p.text

if "正确答案: " in m:

ans = input("请输入你的答案:")

a = "正确答案: {0} ".format(ans)

print(a)

b = m

print(b)

comparison(a, b)

print()

print("==================全国计算机二级考试之Python刷题==================")

else:

print(m)

结果是这个样子的:

以上这篇Python使用docx模块实现刷题功能代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

时间: 2020-02-13

python刷题软件代码_Python使用docx模块实现刷题功能代码相关推荐

  1. python编的俄罗斯方块游戏_Python使用pygame模块编写俄罗斯方块游戏的代码实例

    文章先介绍了关于俄罗斯方块游戏的几个术语. 边框--由10*20个空格组成,方块就落在这里面. 盒子--组成方块的其中小方块,是组成方块的基本单元. 方块--从边框顶掉下的东西,游戏者可以翻转和改变位 ...

  2. 微信运动刷步软件是真的吗?微信运动刷步软件有用吗?

    微信运动刷步软件是真的吗 微信运动刷步软件有用吗 微信运动刷步软件 微信运动刷步appv7.1 类型:便捷生活 大小:45.21MB 评分:7.4 平台: 标签:生活服务运动健身减肥效率 立即下载 微 ...

  3. python中docx模块的使用_python使用docx模块读写docx文件的方法与docx模块常用方法详解...

    一,docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的.也就是说python-docx模块会把word文档,文档中的段落.文本.字体等都看做对象,对对象 ...

  4. 手机如何看python代码_python如何绘制iPhone手机图案?(代码示例)

    本篇文章给大家带来的内容是介绍python如何绘制iPhone手机图案?(代码示例).有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 虽然我用不起苹果手机,但我可以用python画出 ...

  5. python批量解压文件_python 批量解压压缩文件的实例代码

    下面给大家介绍python 批量解压压缩文件的实例代码,代码如下所述: #/usr/bin/python#coding=utf-8import os,sys import zipfile open_p ...

  6. python脚本自动qq签到_Python爬虫实现自动登录、签到功能 附代码

    这篇文章主要介绍了Python爬虫实现自动登录.签到功能的代码,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 前几天在一个素材网站上下载东 ...

  7. python docx模块pip安装_python安装docx模块

    python docx 怎么安装 如何安装python docx 直接 pip install docxor python -m pip install docxor sudo python -m p ...

  8. python文件按时间排序_python按修改时间顺序排列文件的实例代码

    python按修改时间顺序排列文件,具体代码如下所示: import os def sort_file_by_time(file_path): files = os.listdir(file_path ...

  9. python sys干嘛的_Python之sys模块

    Sys模块函数之多,我只能选取自己认为比较实用的一些函数列在此处.借马云找员工的说法,"找最合适的而不是最天才的",这句话,我个人觉得在很多方面都能适应,学习也不在话下.Sys模块 ...

最新文章

  1. OpenCV中使用YOLO对象检测
  2. 年过四十的男人,为何路越走越窄?
  3. multi-mono-sf:自监督多帧单目场景流估计
  4. OMS SDK中OPhone应用与BAE JIL中Widget应用的区别
  5. C - Line-line Intersection Gym - 102220C(线段相交)
  6. Java World中的GraphQL简介
  7. JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
  8. python123第三周测验答案_python123 测验3: 基本数据类型 (第3周)
  9. (转)海岸线提取完成, 海浪排岸效果
  10. itext 7 设置页面大小_indesign页面设置技巧教程【indesign页面大小设置教程】
  11. EMQ MQTT云服务器搭建 - 阿里云轻量应用服务器
  12. 如何正确看待LeCun工作调整?听听FAIR研究员们现身说法
  13. 世界主要国家的网络管理体制
  14. Go---第六章:方法(小知识点笔记)
  15. postman并发测试_PostMan接口压力测试
  16. python dwg转图片_如何把cad转高清jpg图片?
  17. C# 中的浅拷贝和深拷贝
  18. 渗透测试常见问题以及方法
  19. Origin怎么画圆形而非椭圆形?
  20. 关于@Value读不到配置文件内容的问题

热门文章

  1. 文治者必有武备不然长大了挨欺负_“有文事者必有武备,有武备者必有文事。”出自司马迁的《史记》。...
  2. Android序列化与反序列化
  3. Nginx优化、服务器状态模块(--with-http_stub_status_module 的安装使用)
  4. java calendar赋值_Java常用日期操作
  5. mysql 导出中文乱码_sqoop导出到mysql中文乱码问题总结、utf8、gbk
  6. 计算机专业勤学善思感悟,勤学善思作文600字
  7. 多布局怎么搭建_小展位大吸引力,如何设计搭建出精致的展台?
  8. Pycharm基本操作
  9. oracle11g迁移到12cpdb,12c跨平台完成PDB的备份迁移
  10. vrf名称_如何使用VRF(可验证随机函数)在以太坊上生成随机数