Menu
Coddy logo textTech

スマート連絡先マネージャー

CoddyのPythonジャーニー「ロジックとフロー」セクションの一部。レッスン 76/78。

challenge icon

チャレンジ

中級

organize_contactsという名前の関数を作成し、連絡先の辞書のリストを処理して、整理された連絡先データベースを作成してください。

入力リスト内の各連絡先辞書には、次のキーがあります。

  • name:人物の名前
  • email:人物のメールアドレス
  • phone:人物の電話番号

この関数では、次の処理を行ってください。

  1. 重複する連絡先(同じメールアドレスまたは電話番号を持つ連絡先)を削除し、最初に出現したものを残す
  2. すべてのメールアドレスを小文字に統一する
  3. 無効なメールアドレスを持つ連絡先を除外する
  4. 無効な電話番号を持つ連絡先を除外する
  5. cleanされた連絡先辞書のリストをReturnする

validationルール:

  • validなメールアドレス:「@」と「.」を含み、スペースを含まないこと
  • validな電話番号:正確に10桁の数字を含むこと(ハイフンや括弧などの数字以外の文字は無視する)

電話番号をcleanするには、Pythonのstr.isdigit()メソッドを使用して、電話番号から数字のみを抽出してください。このメソッドは、文字が数字(0-9)の場合にTrueを返し、それ以外の場合にFalseを返すため、数字以外の文字をfilterするのに最適です。

入力例:

contacts = [
    {"name": "John Doe", "email": "john@email.com", "phone": "123-456-7890"}
]

期待される出力:

[
    {"name": "John Doe", "email": "john@email.com", "phone": "1234567890"}
]

自分で試してみよう

def organize_contacts(contact_list):
    # ここに解答を書いてください
    
    # 1. 検証用のヘルパー関数を作成する
    # - メール形式を検証する関数
    # - 電話番号をクリーンアップして検証する関数
    
    # 2. 各連絡先を処理する
    # - メールをクリーンアップ(小文字)し、電話をクリーンアップ(数字のみ)
    # - メールと電話が有効か確認する
    # - 重複をチェックする
    
    # 3. クリーンな連絡先リストを返す
    pass

ロジックとフローのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ