Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком выполнения путешествия по Python на Coddy. Урок 76 из 78.

challenge icon

Задание

Средне

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

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

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

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

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

Правила validation:

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

Все уроки раздела Логика и управление потоком выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор Python