Skip to content
This page has been auto-translated and may contain errors.View in English

闪卡学习应用

Zee 嘿,听我说。我六周后有推进系统的考试,通过自测的方式我学得更好。你能做一个闪卡应用吗?从文件加载卡片,给我显示正面,我输入答案,它告诉我答对了没有。还要能保存我的进度,这样我可以从上次停下的地方继续。拜托啦 🙏

你要构建的内容

Deck: python-basics.json (12 cards)

Front: What does len() return for a string?
Your answer: the number of characters
Correct!

Front: What type does input() always return?
Your answer: int
Incorrect. The answer is: str

---
Session complete: 8/12 correct.
Progress saved.

你将需要

  • 类与对象 — 用 Card 类和 Deck 类可以干净地建模数据
  • 文件与异常 — 从 JSON 文件加载和保存卡片组,处理首次运行时文件缺失的情况
  • 模块与标准库json 用于文件处理,random 用于洗牌
  • 字典与列表 — 在把它包装成类之前的底层结构
  • 控制流 — 遍历卡片组,根据答对或答错进行分支

提示

从数据入手,而不是类。 一张卡片就是两个字符串:正面和背面。一组卡片就是一个卡片列表。先把这个跑通,然后如果你想要更整洁的接口,再把它包装成类。

JSON 处理文件格式。 json.load() 把一个文件读成 Python 列表或字典。json.dump() 把它写回去。json 模块在标准库里。

把文件加载放在 try/except 里。 脚本第一次运行时,保存文件还不存在。捕获 FileNotFoundError 可以让你优雅地从一个空卡片组开始,而不是崩溃。

更进一步

当核心学习循环跑通后:

  • 重复错题。 记录玩家答错的卡片,并在会话结束时再循环一遍。
  • 多个卡片组。 列出某个文件夹中可用的 .json 文件,让用户选择要学习的卡片组。
  • 间隔重复。 记录每张卡片被答对的次数。把答对次数少的卡片更频繁地显示出来。