title: 闪卡学习应用 description: 从 JSON 文件加载闪卡牌组,进行学习测试,并跨会话追踪得分。
闪卡学习应用
Zee 嘿,所以。我六周后要考推进系统,我通过自我测试学得更好。你能构建一个闪卡应用吗?从文件加载卡片,显示正面,我输入答案,它告诉我是否正确。我还想保存我的进度,这样我可以接着之前的进度继续。拜托了 🙏
你将要构建的内容
Deck: python-basics.json (12 张卡片)
Front: len() 对字符串返回什么?
Your answer: 字符的数量
Correct!
Front: input() 总是返回什么类型?
Your answer: int
Incorrect. The answer is: str
---
Session complete: 8/12 correct.
Progress saved.你需要的知识
- Classes and objects - 一个
Card类和一个Deck类可以让你以简洁的方式对数据建模 - Files and exceptions - 从 JSON 文件加载和保存牌组,处理首次运行时文件不存在的情况
- Modules and the standard library - 使用
json处理文件,使用random进行洗牌 - Dictionaries and lists - 在用类包装之前的基础数据结构
- Control flow - 循环遍历牌组,根据答案是否正确进行分支
提示
从数据开始,而不是从类开始。 一张卡片是两个字符串:正面和背面。一个牌组是一个卡片列表。先让它工作,如果需要更清洁的接口再用类包装。
JSON 处理文件格式。 json.load() 将文件读入 Python 列表或字典。json.dump() 将其写回。json 模块在标准库中。
在 try/except 中包装文件加载。 脚本第一次运行时,保存文件不会存在。捕获 FileNotFoundError 可以让你优雅地以空牌组开始,而不是崩溃。
进一步扩展
核心学习循环工作后:
- 重复错误答案。 跟踪玩家答错的卡片,在会话结束时再次循环它们。
- 多个牌组。 列出文件夹中可用的
.json文件,让用户选择要学习哪个牌组。 - 间隔重复。 记录每张卡片被正确回答的次数。更频繁地显示答对次数较少的卡片。

