现在网络上面题库系统都太昂贵,所以我自己搓了一个。
这是题库的核心,访问json文件,所有的题目都存在json内:
class JsonQuestionBank:
def __init__(self, file_path: str = 'questions.json'):
self.file_path = file_path
self.questions = self._load_questions()
def _load_questions(self) -> List[Dict]:
try:
with open(self.file_path, 'r') as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
return []
def _save_questions(self):
with open(self.file_path, 'w') as f:
json.dump(self.questions, f, indent=2)
def add(self, question: str, tags: str, options: List[str], answer: str) -> int:
"""添加题目并返回ID"""
q_id = len(self.questions) + 1
self.questions.append({
'id': q_id,
'tags':tags,
'question': question,
'options': options,
'answer': answer
})
self._save_questions()
return q_id
def get(self, q_id: int) -> Dict:
"""根据ID获取题目"""
return next((q for q in self.questions if q['id'] == q_id), None)
def get_random(self) -> Dict:
"""随机获取一道题"""
return random.choice(self.questions) if self.questions else None
def delete(self, q_id: int) -> bool:
"""删除题目"""
for i, q in enumerate(self.questions):
if q['id'] == q_id:
self.questions.pop(i)
self._save_questions()
return True
return FalsePython这是核心访问部分,可交互性过低,只能实现命令行式的交互,我有额外写了一些增加交互性的代码。
#while 循环 和 input堆砌的屎山
这就是第一版可用版本了,交互性太低了。
现在是已经更新的功能和版本
- V0.1 2025/05/20 更新基础录入题目,随机答题,检查所有题干以及特定题干功能
- V0.2 2025/06/02 更新支持含图片题目录入(仅一张),选定题目检查
- 已知的BUG:插入图片可能引起颈椎病
- V0.3-V1.4 2025/07/03 修复部分BUG 质量更新 处理后雨课堂题库导入 便捷题库自选
- V2.0 2025/08/30 换源 还未更新录入部分对非含图片题库/B型选择题兼容更新随机答题
- V2.01 2025/09/01 更新了实时时间和计时器更新了正确率和进度展示更新了可更换背景板雏形
- V2.01.1 2025/09/02 添加历史答题历史记录
- V2.01.2 2025/09/03 添加设置-更换背景
- V2.01.3 2025/09/04 导出版本 完成APK初步完成
- V2.01.5 2025/09/24 添加后台录入系统
- 计划中的更新:错题本 收藏夹 双端同步
我希望能开发一个人人都能便捷使用的题库系统,后面我还会继续分享我软件的更新历程。

