python刷题软件代码_Python使⽤docx模块实现刷题功能代码起由:
前⼀阵⼦想要刷⼀刷国⼆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)):
python新手适合的软件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模块实现刷题功能代码就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持聚⽶学院。