フラッシュカード学習アプリ
Zee ねえ、ちょっと聞いて。6週間後に推進システムの試験があって、自分でテストする方がずっと覚えやすいんだ。フラッシュカードアプリを作ってくれない?ファイルからカードを読み込んで、表を見せてくれて、答えを入力したら正解かどうか教えてくれるやつ。あと進捗を保存して、続きからできるようにしたいな。お願い 🙏
作るもの
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を使います - 辞書とリスト — クラスで包む前の基礎となる構造です
- 制御フロー — デッキをループし、正解か不正解かで分岐します
ヒント
クラスではなく、データから始めましょう。 カードは2つの文字列、表と裏です。デッキはカードのリストです。まずそれを動かしてから、よりきれいなインターフェースが欲しければクラスで包みましょう。
JSONがファイル形式を扱います。 json.load() はファイルをPythonのリストや辞書として読み込みます。json.dump() は逆に書き出します。json モジュールは標準ライブラリに含まれています。
ファイル読み込みを try/except で囲みましょう。 スクリプトを初めて実行したときは、保存ファイルが存在しません。FileNotFoundError をキャッチすることで、クラッシュせずに空のデッキで始めることができます。
さらに進めて
コアの学習ループが動いたら:
- 間違えた答えを繰り返す。 プレイヤーが間違えたカードを記録し、セッションの最後にもう一度ループしましょう。
- 複数のデッキ。 フォルダ内の利用可能な
.jsonファイルを一覧表示し、ユーザーに学習するデッキを選ばせましょう。 - 間隔反復学習。 各カードが何回正解されたかを記録します。正解回数が少ないカードをより頻繁に表示しましょう。

