連絡先帳
Pip ねえ!6つのステーションに連絡先が散らばってて、どんどん分からなくなっちゃうの。電話番号もメアドも、あちこちにあって。ターミナルで動くシンプルな連絡先帳を作ってくれない?人を追加して、名前で検索して、全員一覧表示する。派手なものは要らない、ちゃんと動くものでいいの 🙏
作るもの
Commands: add / search / list / quit
> add
Name: さくら 田中
Phone: 07700 900123
Email: [email protected]
Saved.
> search
Name: さくら
さくら 田中 — 07700 900123 — [email protected]
> list
1. さくら 田中 — 07700 900123
2. ...
> quit必要なもの
- 辞書 — 各連絡先は辞書、連絡先帳はそれらのリスト
- リスト — すべての連絡先を1つのリストにまとめてループ処理
- 関数 — 各コマンドごとに1つの関数を作ると、すっきりして読みやすい
- 制御フロー — ユーザーが「quit」と入力するまで実行されるループ
- 文字列 — 大文字小文字を区別しない検索、名前の整形
ヒント
各連絡先を辞書として保存しましょう。 "name"、"phone"、"email" のようなキーを使います。すべての連絡先をループの外側のリストに入れておけば、コマンド間でデータが保持されます。
コマンドチェック付きのwhileループが自然な構造です。 コマンドを読み取り、適切な関数を呼び出し、繰り返す。ユーザーが「quit」と入力したら抜けます。
検索では、完全一致よりも部分一致の方が便利です。 検索語が名前のどこかに含まれているか(大文字小文字を区別せずに)チェックすれば、"さくら" で「さくら 田中」が見つかります。
さらに進める
コアのループが動くようになったら:
- 保存と読み込み。 ユーザーが終了するとき、すべての連絡先をJSONファイルに書き込みます。スクリプト開始時に、そのファイルがあれば読み込みます。これにはファイルの章が必要です。
- 連絡先の削除。 名前で連絡先を削除する
deleteコマンドを追加します。 - ソート済み一覧。 一覧出力を印字する前に、名前順にアルファベットでソートします。

