马原刷题工具

要安装的库:pywin32, python-docx
选择题库文件word后,就能开始刷题了。
导入题库时会自动生成一个docx文件和json文件,想要重新导入就删除json文件。

"""
@author: Bre Athy
@contact: https://www.zhihu.com/people/you-yi-shi-de-hu-xi
@productware: PyCharm
@file: 刷题.py
@time: 2020/1/1 22:28
"""
# 要安装的库:pywin32, python-docx
from docx import Document
from win32com.client import Dispatch as DPT
import os, re, json, copy, randomdef main():print("导入题库前请先关闭word!")wordpath = input("请输入题库word文档的位置:")if os.path.exists(os.path.splitext(wordpath)[0]+".json"):with open(os.path.splitext(wordpath)[0] + ".json", "r") as fp:Qs = json.load(fp)else:if os.path.splitext(wordpath)[1] == ".doc":print("检测到文件格式为doc,正在转为docx")word = DPT("Word.Application")doc = word.Documents.Open(wordpath)wordpath += "x"doc.SaveAs(wordpath, 12)doc.Close()word.Quit()print("转格式成功,文件存储为",wordpath)word = Document(wordpath)i = 1Qs = []Q = {}mcq = Falseif input("是否导入多选题(Y/N)?").upper() == "y":mcq = Truefor par in word.paragraphs:# 处理answer的函数,添加到列表中def parseresult(regex, content, item, over = False, answer = False):result = re.match(regex, content)if result:Q[item] = result.group(1).strip()if answer:if len(Q[item])>1 and mcq:Qs.append(copy.deepcopy(Q))Q.clear()if over:Qs.append(copy.deepcopy(Q))# print(Q)Q.clear()if par.paragraph_format.alignment == 1:if "多选题" not in par.text:print("导入"+par.text)i = 1else:result = re.match(".*?(\d+)"+r"[\..]"+"(.*)",par.text)if result:Q={"Item": result.group(1),"Question" : result.group(2)}i += 1parseresult(".*\(A\)(.*)", par.text, "A")parseresult(".*\(B\)(.*)", par.text, "B")parseresult(".*\(C\)(.*)", par.text, "C")parseresult(".*\(D\)(.*)", par.text, "D")parseresult(".*\(B\)(.*)", par.text, "B")parseresult(".*\(A\)(.*)\(B", par.text, "A")parseresult(".*\(B\)(.*)\(C", par.text, "B")parseresult(".*\(C\)(.*)\(D", par.text, "C")parseresult(".*A\.(.*)", par.text, "A")parseresult(".*B\.(.*)", par.text, "B")parseresult(".*C\.(.*)", par.text, "C")parseresult(".*D\.(.*)", par.text, "D")parseresult(".*A\.(.*?)B\.", par.text, "A")parseresult(".*B\.(.*?)C\.", par.text, "B")parseresult(".*C\.(.*?)D\.", par.text, "C")parseresult("答.*?[::].*?(\w+).*", par.text, "Answer", answer=True)parseresult("答.*?[::].*?(\w+).*知", par.text, "Answer", answer=True)parseresult(".*?知.*:(.*)", par.text, "knowledge", over=True)with open(os.path.splitext(wordpath)[0] + ".json", "w") as fp:json.dump(Qs, fp)print("题库导入完成!")result = input("1、随机出题\n2、顺序出题\n请选择:")print("******************** 按下回车进入下一题 ********************")# 取出一道题def getQ(Q):input()def pprint(des, item):if item in Q.keys():print(des, Q[item])if len(Q["Answer"]) == 1:if ("A" in Q["Answer"]) or ("B" in Q["Answer"]) or ("C" in Q["Answer"]) or ("D" in Q["Answer"]):print("******************** 单选题 ********************")else:print("******************** 判断题 ********************")else:print("******************** 多选题 ********************")if "Item" not in Q.keys():return Noneprint(str(Q["Item"]) + ". " + Q["Question"])pprint("A.", "A")pprint("B.", "B")pprint("C.", "C")pprint("D.", "D")if input("请选择:").upper() == Q["Answer"]:print("正确!")else:pprint("错误!正确答案:", "Answer")pprint("知识点:", "knowledge")if result == "2":for Q in Qs:getQ(Q)elif result == "1":while True:getQ(random.choice(Qs))else:print("未选择,自动退出!")if __name__ == "__main__":main()

第一次导入比较慢,第二次就打开就很快了了:
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/54237.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马克思主义基本原理

文章目录 马克思主义哲学 (ch.1-4)第一章:马克思主义是关于无产阶级和人类解放的科学 (Ch1.导论)1.马哲著作2.马克思主义的鲜明特征 第二章:世界的物质性及其发展规律 (Ch2 唯物论与辩证法)1.哲学的两个基本问题唯物主义唯心主义物…

6.3 Python 实例9-基本统计值计算

本文内容为北京理工大学Python慕课课程的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到CSDN博文中, 源文件已经上传到我的资源中,有需要的可以去看看, 我主…

9.1 Python 从数据处理到人工智能(数据分析/数据可视化/文本处理/机器学习)

本文内容为北京理工大学Python慕课课程的课程讲义, 将其整理为OneNote笔记同时添加了本人上课时的课堂笔记, 且主页中的思维导图就是根据课件内容整理而来, 为了方便大家和自己查看,特将此上传到CSDN博文中, 源文件已经上传到我的资源中,有需要的可以去看看, 我主…

马原学习笔记记录

1.分值 马原理:24%;毛中特:30%;近现代史:14%;思修法基:16%;时政和当代:16% 2.马原理命题方式 马原理是考研政治中最难的科目,在试卷中命制4道单选题&#…

python 爬虫抓取网页数据导出excel_python爬虫:利用函数封装爬取多个网页,并将爬取的信息保存在excel中(涉及编码和pandas库的使用)...

在之前的文章中,我们已经爬取了单网页的湖北大学贴吧的信息。我爱小徐子:(python小白必看!)python爬虫详细讲解:静态单网页的内容爬取 爬取对象:百度贴吧湖北大学吧​zhuanlan.zhihu.com 仔细想…

C++中cin读取数据原理解析

在网上看别人的博客关于cin的解读,有感而发!解决了我心头的疑惑,所以在此进行记录。 参考博客源地址:(23条消息) cin、cin.get()、cin.getline()、getline()的区别_cin.getline()函数_啊大1号的博客-CSDN博客(23条消息) C while(…

马原大题知识点整理

B站上的马原大题知识点 在网上没有找到对应的资料,手打了一份(可能会有部分错误) 马原大题 文章目录 一、马哲答题考核规律二、马哲答题书写格式三、马哲大题背诵概念(一)辩证法1、联系观2、发展观3、新事物4、五大基…

研究生复试之专业问答

比较 TCP与 UDP TCP与 UDP都是传输层的协议 , 且都用端口号标识数据所达的进 程。 TCP提供的是面向连接服务 , 提供可靠交付。且具有流量控制 和拥塞控制。可用于可靠要求高的场合如 :SMTP,FTP,HTTP等 。 UDP提供的是无连接服务 , 提供不可靠交付 , 且无确认机制。主要 用于即…

大模型总是「胡说八道」怎么办?手把手教你如何应对!

随着 ChatGPT 的出现,「AI 幻觉」一词被频繁提及。那么,什么是 AI 幻觉?简单来说,就是大模型在一本正经地胡说八道。 不止 ChatGPT,其他大语言模型也经常如此,究其根本是大语言模型在训练的过程中存在数据偏…

美军 AI 无人机 “抗令杀人”?LeCun、吴恩达在线辟谣:假的,是炒作!

整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 上周三,近 400 名知名专家共同签署的 22 字声明,令人们将目光再次聚焦 AI 可能带来的风险,有关“AI 可能灭绝人类”的讨论更是甚嚣尘上。 在这种氛围中&#xff0c…

谷歌CEO皮查伊暗示要裁员;华为研发投入位居首位;Android 13首个安全更新|极客头条

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&…

易语言写微信群AI人工智能机器人,自动对话、聊天、发消息

工具我们已经打包好了,关注公众号“花花爱软件”回复“csdn”下载哈。。。。支持一下,码字不易 需要的工具: l 易语言 l 精易模块V8 l 精易助手, 朋友们大家好,我是今天的讲师,花花爱人,今天…

微信小程序实现分享至朋友圈的功能

微信小程序实现分享至朋友圈的功能 微信小程序从基础库 2.11.3 开始,可将小程序页面分享到朋友圈。适用于内容型页面的分享,不适用于有较多交互的页面分享。 1 设置分享状态 小程序页面默认不可被分享到朋友圈,开发者需主动设置“分享到朋友…

微信小程序开启分享给好友及分享朋友圈功能

创建一个空白模板的微信小程序,发布成功后才发现不能分享给好友 及朋友圈 查了下才知道,要有分享功能需要开启。 在小程序首页的里添加以下两个函数 //用户点击右上角分享给好友,要现在分享到好友这个设置menu的两个参数,才可以…

用python 实现朋友圈自动点赞

使用该程序只是为了熟悉pyautogui模块的应用,不是所有圈文该点赞的,请读者慎用! 我们需要pyautogui模块,pyautogui是一个纯Python的GUI自动化工具,通过它可以让程序自动控制鼠标和键盘。 1、安装 pip3 install pya…

【基于ESP8266、点灯科技集小爱同学5灯语音控制、本地按键、无线按键、离线语音的灯光控制】

集小爱同学语音控制、本地按键、无线按键、离线语音的灯光控制 电路图 代码 #define BLINKER_WIFI #define BLINKER_MIOT_MULTI_OUTLET //设置为小爱多个插座的模式 #include <Blinker.h> #define BLINKER_PRINT Serial //串口协议库 #define BLINKER_WITHOUT_S…

Blinker接入小爱同学做智能家居RGB灯

如果你有一部非小米手机&#xff0c;怎样连入米家&#xff0c;使用小爱同学语音控制家电呢 此文相关看不懂的知识点 1、esp8266无法下载程序&#xff1a;参考我的另外一篇文章 链接 2、非小米手机小爱同学语音接入 链接 实现功能 小爱同学语音控制客厅灯开关、模式切换、亮度…

chatgpt赋能python:用Python制作游戏

用Python制作游戏 游戏开发一直是计算机编程中最激动人心的领域之一。Python作为一种流行的编程语言&#xff0c;也可以用来制作游戏。在本文中&#xff0c;我们将介绍如何用Python制作游戏&#xff0c;并探讨用Python进行游戏开发的优点和局限性。 游戏开发的优点 Python作…

chatgpt赋能python:用Python编写游戏

用Python编写游戏 Python是一种用于编写各种应用程序的高级编程语言&#xff0c;它易于阅读和编写&#xff0c;并且在不同的操作系统中都具有广泛的使用。使用Python编写游戏可以使游戏开发人员轻松和快速地创建相当复杂的游戏&#xff0c;同时大幅度增强了游戏体验。 为什么…

chatgpt赋能python:Python怎么做3D游戏?

Python怎么做3D游戏? 随着游戏开发技术的不断更新和改进&#xff0c;Python也被越来越多的游戏开发者和爱好者所使用。事实上&#xff0c;Python可以进行3D游戏开发&#xff0c;并且其简单易学、离散记录和良好的结构化编程可以为游戏开发带来诸多便利。因此&#xff0c;本篇…