圆月山庄资源网 Design By www.vgjia.com
起由:
前一阵子想要刷一刷国二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模块实现刷题功能代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
标签:
Python,docx模块,刷题
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]
- TWINS.2004-SUCHABETTERDAY精美礼盒特别版2CD【英皇娱乐】【WAV+CUE】
- 音乐磁场.1991-1998-音乐磁场系列22CD【瑞星】【WAV+CUE】
- 韦绮姗.1993-LOVE.ME.ONCE.AGAIN【永高创意】【WAV+CUE】