title: フラッシュカード学習アプリ description: JSONファイルから読み込んだフラッシュカードのデッキを学習し、セッション間でスコアを追跡します。
フラッシュカード学習アプリ
Zee ねえ、6週間後に推進システムの試験があるんだ。自分でテストすることで学ぶのが得意なんだけど、フラッシュカードアプリ作ってくれない?ファイルからカードを読み込んで、表を見せて、答えを入力して、正解かどうか教えてくれる。そして進捗を保存したいから、前回の続きから始められるようにしてほしい。お願い🙏
何を作るか
Deck: python-basics.json (12 cards)
Front: len()が文字列に対して返すものは?
Your answer: 文字の個数
Correct!
Front: input()が常に返す型は?
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ファイルをリストアップして、どのデッキを学習するか選択できるようにします。 - 間隔反復。 各カードが正解した回数を記録します。正解した回数が少ないカードをより頻繁に表示します。

