Menu
Coddy logo textTech

Умный менеджер контактов

Часть раздела Logic & Flow путешествия по Python на Coddy — урок 76 из 78.

challenge icon

Задание

Средне

Создайте функцию с именем organize_contacts, которая обрабатывает список словарей контактов для создания чистой базы данных контактов.

Каждый словарь контактов во входном списке имеет следующие ключи:

  • name: Имя человека
  • email: Адрес электронной почты человека
  • phone: Номер телефона человека

Ваша функция должна:

  1. Удалять дубликаты контактов (контакты с одинаковым адресом электронной почты или номером телефона), сохраняя первое вхождение
  2. Приводить все адреса электронной почты к нижнему регистру
  3. Отфильтровывать контакты с невалидными адресами электронной почты
  4. Отфильтровывать контакты с невалидными номерами телефонов
  5. Возвращать список очищенных словарей контактов

Правила валидации:

  • Валидный email: Должен содержать '@' и '.', и не должен содержать пробелов
  • Валидный телефон: Должен содержать ровно 10 цифр (игнорируйте нецифровые символы, такие как тире или скобки)

Для очистки номеров телефонов вам следует использовать метод Python str.isdigit(), чтобы извлечь из номеров телефонов только числовые цифры. Этот метод возвращает True, если символ является цифрой (0-9), и False в противном случае, что делает его идеальным для фильтрации нецифровых символов.

Пример входных данных:

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. Обработайте каждый контакт
    # - Очистите email (нижний регистр) и телефон (только цифры)
    # - Проверьте, являются ли email и телефон валидными
    # - Проверьте на наличие дубликатов
    
    # 3. Верните очищенный список контактов
    pass

Все уроки раздела Logic & Flow