1. Главная
  2. Библиотека
  3. Программирование
  4. Михаил записал телефоны всех своих друзей, чтобы автома...
Разбор задачи

Михаил записал телефоны всех своих друзей, чтобы автоматизировать поиск нужного номера. У каждого из друзей Михаила может быть один или более телефонных номеров. Напишите программу, которая поможет Михаилу находить все номера определённого друга. Формат

  • Предмет: Программирование
  • Автор: Кэмп
  • #Основы алгоритмизации и программирования
  • #Структуры и алгоритмы обработки данных
Михаил записал телефоны всех своих друзей, чтобы автоматизировать поиск нужного номера. У каждого из друзей Михаила может быть один или более телефонных номеров. Напишите программу, которая поможет Михаилу находить все номера определённого друга. Формат

Условие:

Михаил записал телефоны всех своих друзей, чтобы автоматизировать поиск нужного номера.

У каждого из друзей Михаила может быть один или более телефонных номеров. Напишите программу, которая поможет Михаилу находить все номера определённого друга.

Формат входных данных
В первой строке задано одно целое число \nn — количество номеров телефонов, информацию о которых Михаил сохранил в телефонной книге. В следующих \nn строках заданы телефоны и имена их владельцев через пробел. В следующей строке записано целое число \nm — количество поисковых запросов от Михаила. В следующих \nm строках записаны сами запросы, по одному на строке. Каждый запрос — это имя друга, чьи телефоны Михаил хочет найти.

Формат выходных данных
Для каждого запроса от Михаила выведите в отдельной строке все телефоны, принадлежащие человеку с этим именем (независимо от регистра имени). Если в телефонной книге нет телефонов человека с таким именем, выведите в соответствующей строке «абонент не найден» (без кавычек).

Примечание 1. Телефоны одного человека выводите в одну строку через пробел в том порядке, в каком они были заданы во входных данных.

Примечание 2. Количество строк в ответе должно быть равно числу \nm.

Примечание 3. Телефон — это несколько цифр, записанных подряд, а имя может состоять из букв русского или английского алфавита. Записи не повторяются.

Решение:

Для решения этой задачи нам необходимо эффективно хранить и искать данные. Поскольку у одного человека может быть несколько номеров, а поиск должен быть независимым от регистра (например, «Женя» и «женя» — это один и тот же человек), идеально подойдет структура данных «словарь» (dict), где ключом будет имя в нижнем регистре, а значением — список телефонов.

Алгоритм решения

  1. Создаем пустой словарь phone_book.
  2. Считываем число nn — количество записей.
  3. Для каждой из nn строк:
    • Разделяем строку на номер и имя.
    • Приводим имя к нижнему регистру с помощью метода .lower()...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Какой подход наиболее эффективен для хранения телефонных номеров друзей, если у каждого друга может быть несколько номеров, и поиск должен быть регистронезависимым?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет