当前位置: 首页 > news >正文

一个自制的比较low的刷题软件

一个自制的比较low的刷题软件

一、背景

工作中往往涉及一些考试,比如阿里云ACP认证,华为GAUSS认证、软考等,应对这些考试的时候,我们往往是先看书后刷题(当然也有直接刷题的大神,毕竟考试,懂的都懂)。有的题库是可以在部分免费刷题软件找到的,比如233网校就有证券从业的题库,但有些题库则很难找到免费的刷题渠道。某宝一查,发现好多卖线下题库的,10元到50元不等。笔者本着能不花钱就不花钱的原则(ps:绝不是因为出不起10块钱),所以琢磨能不能自己搞一个刷题软件,毕竟好些题网上也有啊。

有同学说了也有一些现成的刷题软件的,我试了几款,要不就是有题目数量的限制,要不就是需要先查看广告或者有广告弹窗,一不小心就点上了。

二、一般性的功能分析

1、每次能给出题干和选项,选择后判断是否正确,并给出解析。

2、将错题摘录下来,供错题强化和复习

三、实现思路

1、题目整理

将题目整理到excel,按照章节或者自定义分类,每个分类可以有多套题目。每类题目整理在一个excel中,每一类的每套题分布在这个excel的不同sheet。

excel表头如下:

表头说明举例
题干题干内容1、要把大象装冰箱总共分为几步
类型单选题/多选题单选题
选项AA、1步
选项B、2步
选项C、3步
选项D、4步
答案C
解析解析:去问宋丹丹

2、使用刷题

(1)用pandas读取excel并展现题目,定义输入流接受做出的答案

(2)判断做答结果和参考答案是否一致

(3)将错题记录在list中并将其写入json文件

(4)显示答案和解析

(5)将错题摘录到excel

(6)题目做完总结。做了多少题目,正确题目数量,错误题目数量

四、代码实现

import json
import osimport pandas
import numpy# 读取excel
file_path = r'题目excel所在位置'
file_sheet = r'待刷题目所在sheet'
error_json = f'./{file_sheet}.json'
error_path = r'错题收集excel位置'
line_start = 3
data_frame = pandas.DataFrame(pandas.read_excel(file_path, sheet_name=file_sheet, keep_default_na=False, header=line_start))
questions = numpy.array(data_frame).tolist()class Learning:def __init__(self, questions):# 做的全部题目数量self.all_test = 0# 储存此次做的题目,用来避免重复self.all_list = []# 正确数量self.corrects = 0# 错误数量self.errors = 0self.Questions = questionsif not os.path.exists(error_json):with open(error_json, 'w', encoding='utf-8') as f:json.dump(list(), f)def choose(self):for line in self.Questions:print(f"题目:{line[0]}")for choose in line[2:6]:print(choose)do_choose = input('请输入你的答案:')if do_choose == line[6]:print('恭喜你答对了!')self.corrects += 1else:print(f'可惜,你答错了,正确答案是:{line[6]}')self.errors += 1with open(f'{error_json}', 'r', encoding='utf-8') as f:error_table = json.load(f)error_table.append(line)with open(error_json, 'w', encoding='utf-8') as f:json.dump(error_table, f, indent=4)self.all_test += 1self.all_list.append(line)print(f'解析:{line[7]}')print('==========================================')print(f'答题结束,此次共做 {self.all_test} 道题,答对 {self.corrects} 题,答错 {self.errors} 题,再接再厉!')def error_write(self):excel_writer = pandas.ExcelWriter(error_path)with open(f'{error_json}', 'r', encoding='utf-8') as f:error_table = json.load(f)error_dataframe = pandas.DataFrame(numpy.array(error_table))error_dataframe.to_excel(excel_writer)excel_writer.close()if __name__ == '__main__':Learning = Learning(questions)Learning.choose()Learning.error_write()

五、待优化项目

目前仅实现了刷题的功能,没有用GUI。

一方面是因为python的GUI看着其实也一般,咱自己用没有必要

另一方面,没那么多花啦呼哨好像刷题更能集中。

所以暂时没有做UI,往后有时间了再做吧。

相关文章:

一个自制的比较low的刷题软件

一个自制的比较low的刷题软件 一、背景 工作中往往涉及一些考试,比如阿里云ACP认证,华为GAUSS认证、软考等,应对这些考试的时候,我们往往是先看书后刷题(当然也有直接刷题的大神,毕竟考试,懂的…...

【Java 集合】List接口 —— ArrayList 与 LinkedList 详解

List接口继承自Collection接口,是单列集合的一个重要分支。 在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引(类似于数组中的元素角标)来访问集合中的指定元素。另外&…...

通信工程学习:什么是PNF物理网络功能

PNF:物理网络功能 PNF(Physical Network Function)即物理网络功能,是指支持网络功能的物理设备。以下是关于PNF的详细解释: 一、定义与特点 定义: PNF是网络设备厂商(如Cisco、华为、H3C等)通过专用硬件实体提供软件功能的设备。这些设备直接在物理服务器上运…...

Unity的Text组件中实现输入内容的渐变色效果

要在Unity的Text组件中实现输入内容的渐变色效果,默认的Text组件不直接支持渐变色。但是,你可以通过以下几种方式实现: ### 1. **使用Shader**来实现渐变效果 通过自定义Shader为Text组件创建一个渐变效果。这是一个常用的做法&#xff0…...

network-scripts目录下没有ens33文件的问题

作者:程序那点事儿 日期:2023/11/09 06:52 systemctl start NetworkManager #开启网络管理器nmcli con show #查看ens33网卡对应的是ifcfg-Wired_connection_3这个文件(网络管理器要开启,不然报错),或者根据…...

OpenHarmony(鸿蒙南向)——平台驱动指南【DAC】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 DAC(Digital to Analog Converter&…...

10.Lab Nine —— file system-下

Symbolic links 添加符号链接 1.添加有关symlink系统调用的定义声明,包括kernel/syscall.h, kernel/syscall.c, user/usys.pl 和 user/user.h. 2.添加新的文件类型T_SYMLINK到kernel/stat.h中,添加新的文件标识位O_NOFOLLOW到kernel/fcntl.h中 3.在ken…...

低代码中实现数据映射的必要性与方案

在数字化转型的浪潮中,低代码平台因其快速开发和灵活性而受到越来越多企业的青睐。然而,随着业务需求的复杂化,单纯依赖低代码工具往往难以满足企业在数据处理和业务逻辑上的要求。数据映射作为连接不同数据源和业务逻辑的桥梁,显…...

SpringBoot集成阿里easyexcel(一)基础导入导出

easyexcel主要用于excel文件的读写&#xff0c;可使用model实体类来定义文件读写的模板&#xff0c;对开发人员来说实现简单Excel文件的读写很便捷。可参考官方文档 https://github.com/alibaba/easyexcel 一、引入依赖 <!-- 阿里开源EXCEL --><dependency><gr…...

四元组问题

目录 问题描述 输入格式 输出格式 样例输入 样例输出 说明 评测数据规模 运行限制 原题链接 代码思路 问题描述 从小学开始&#xff0c;小明就是一个非常喜欢数学的孩子。他喜欢用数学的方式解决各种问题。在他的高中时期&#xff0c;他遇到了一个非常有趣的问题&…...

如何用Prometheus监控禁用了Actuator的SpringBoot?

需求来源 prometheus监控微服务一般都是使用micrometer结合actuator来做&#xff1a; 添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency> <d…...

使用TensorFlow实现一个简单的神经网络:从入门到精通

使用TensorFlow实现一个简单的神经网络:从入门到精通 在现代数据科学和机器学习领域,神经网络是一个非常重要的工具。TensorFlow 是一个开源的深度学习框架,由 Google 开发和维护,它使得构建和训练神经网络变得更加容易。本文将详细介绍如何使用 TensorFlow 实现一个简单的…...

应用DFX能力介绍

一、HarmonyOS生态DFX能力范围 围绕开发者&#xff0c;构建三方应用和设备从开发到维护全生命周期所必需、有竞争力、有特色的调试调优、定位、维护能力。 二、HarmonyOS DFX能力全集 三、DFX设计主要范围 1、HiLog 日志分类 日志常用命令 日志级别 日志规则 2、HiAppEvent 完…...

第三篇 第20章工程计价数字化与智能化

第三篇 工程计价 第20章 工程计价数字化与智能化 20.1 BIM在工程计价中的应用 20.1.1 BIM概述 1.定义 在建设工程及设施全生命周期内,对其物理特征和功能特征信息进行数字化表达,依次设计、施工、运营的过程和结果的总称。应由核心层、共享层、专业领域层、资源层四个概念层…...

成语700词(46~65组)

目录 46.熟悉、了解、知晓相关(15 个)47.很常见不奇怪(6 个)48.看法一致与否(10 个)49.从细节看全貌(10 个)50.看事情透彻(11 个)51.对事情的态度与评价(7 个)52.数量多与少(11 个)53.建筑相关(6 个)54.相同与不同(17 个)55.技艺精湛(10 个)56.与观看欣赏相…...

linux如何配置静态IP

文章目录 使用ip命令&#xff08;临时配置&#xff09;Debian/Ubuntu系统&#xff08;使用netplan&#xff09;CentOS/RHEL系统&#xff08;使用nmcli或nmtui&#xff09;使用nmcli&#xff08;命令行界面&#xff09;使用nmtui&#xff08;文本用户界面&#xff09;通过图形界…...

Dependency Check:一款针对应用程序依赖组件的安全检测工具

关于Dependency Check Dependency-Check 是一款软件组合分析 &#xff08;SCA&#xff09; 工具&#xff0c;可尝试检测项目依赖项中包含的公开披露的漏洞。它通过确定给定依赖项是否存在通用平台枚举 &#xff08;CPE&#xff09; 标识符来实现此目的。如果找到&#xff0c;它…...

Python 从入门到实战28(文件的读操作)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了文件的打开、创建、关闭的相关知识。今天我们将…...

[leetcode刷题]面试经典150题之7同构字符串(简单)

这个题虽然是简单题&#xff0c;但是看了半天还是没啥好思路&#xff0c;最后看了解题学到了不少知识点 1.index() 函数查找序列中首次出现的元素索引 2.zip函数&#xff1a;用于将可迭代的对象&#xff08;如列表、元组、字典等&#xff09;作为参数&#xff0c;将对象中对应…...

【Keil5教程及技巧】耗时一周精心整理万字全网最全Keil5(MDK-ARM)功能详细介绍【建议收藏-细细品尝】

&#x1f48c; 所属专栏&#xff1a;【单片机开发软件技巧】 &#x1f600; 作  者&#xff1a; 于晓超 &#x1f680; 个人简介&#xff1a;嵌入式工程师&#xff0c;专注嵌入式领域基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大家&#xff1…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...