Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/75: Рейтинг темы: голосов - 75, средняя оценка - 4.57
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43

Телефонная книга

16.03.2020, 20:41. Показов 15684. Ответов 7

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые, прошу вашей помощи,в весьма тривиальной задаче, которая тем не менее решению с моей стороны не поддается, так как тема словари весь сложна для меня, поэтому пришел на форму просить помощи, если вас не затруднит хотя бы кратко пояснить тот который вы напишите(если конечно хоть кто-то ответит)код, так как повторюсь,словари трудная тема. Должно быть два решения. Итак условия следующие:

Этап 1.
Коля устал запоминать телефонные номера и заказал у Вас программу, которая заменила бы ему телефонную книгу. Коля может послать программе два вида запросов: строку, содержащую имя контакта и его номер, разделенные пробелом, или просто имя контакта. В первом случае программа должна добавить в книгу новый номер, во втором – вывести номер контакта. Ввод происходит до символа точки. Если введенное имя уже содержится в списке контактов, необходимо перезаписать номер.
Ввод
Кликните здесь для просмотра всего текста

Ben 89001234050
Alice 210-220
Alice
Alice 404-502
Nick +16507811251
Ben
Alex +4(908)273-22-42
Alice
Nick
Robert 51234047129
Alex
.

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

210-220
89001234050
404-502
+16507811251
+4(908)273-22-42


Этап 2.
Коля понял, что у многих из его знакомых есть несколько телефонных номеров и нельзя хранить только один из них. Он попросил доработать Вашу программу так, чтобы можно было добавлять к существующему контакту новый номер или даже несколько номеров, которые передаются через запятую. По запросу телефонного номера должен выводиться весь список номеров в порядке добавления, номера должны разделяться запятой. Если у контакта нет телефонных номеров, должна выводиться строка "Не найдено".
Ввод
Кликните здесь для просмотра всего текста

Ben 89001234050, +70504321009
Alice 210-220
Alice
Alice 404-502, 894-005, 439-095
Nick +16507811251
Ben
Alex +4(908)273-22-42
Alice
Nick
Robert 51234047129, 92174043215
Alex
Robert
.

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

210-220
89001234050, +70504321009
210-220, 404-502, 894-005, 439-095
+16507811251
+4(908)273-22-42
51234047129, 92174043215
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.03.2020, 20:41
Ответы с готовыми решениями:

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

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

Телефонная книга
Вводятся номера телефонов в формате: +7xxxxxxxxxx +6xxxxxxxxxx +7xxxxxxxxxx +5xxxxxxxxxx ... пока не будет введена пустая...

7
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.03.2020, 21:37
strannikkk999, что вам не понятно про словари? это самое легкое в питоне.
читаем. словари
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
16.03.2020, 21:44
strannikkk999,
Первая итерация должна иметь книгу в виде словаря
Python
1
Dict[str, str]
Вторая итерация программы будет иметь книгу как
Python
1
Dict[str, List[str])
1
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43
16.03.2020, 21:45  [ТС]
во первый мне не ясно почему он не перезаписывает значение, когда встречает уже имеющийся ключ, и ка кэт овсе оофрмить в while, через for, более менее что то получилось, но не совсем то
Python
1
2
3
4
5
6
7
8
a = input().split()
dicti = {}
for i in range(11):
    if a[0] in dicti:
        print(dicti[a[0]])
    else:
        dicti[a[0]]=a[1]   
    a = input().split()
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.03.2020, 21:54
Лучший ответ Сообщение было отмечено strannikkk999 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
phone_book = dict()
 
data = input()
while data != '.':
    data = data.split()
    if len(data) == 2:
        name, number = data
        phone_book[name] = number
    else:
        name = ''.join(data)
        print(phone_book[name])
    data = input()
1
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43
16.03.2020, 22:00  [ТС]
Спасибо вам огромное, вы очень помогли, просто на пайтонтьтор, на которым я уже много раз был, как то такие вещи, что вы написали, не совсем очевидны,спасибо еще раз
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
16.03.2020, 22:33
Лучший ответ Сообщение было отмечено strannikkk999 как решение

Решение

Не по теме:

strannikkk999, там самые основы но мне вполне хватило понять. сам случайно попал туда и ради интереса начал читать и решать задачи. из программирования до этого только бейсик в далеком 88 году раз в неделю в школе был и то в пустую.



Добавлено через 14 минут
второй вариант. сложность только в том что убрать из входных данных запятые и в ключ писать список номеров а если имя уже есть в списке то добавить в значение новый номер
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
phone_book = dict()
 
data = input()
while data != '.':
    data = data.replace(',','').split()
    if len(data) == 1:
        name = ''.join(data)
        if name in phone_book:
            print(', '.join(phone_book[name]))
        else:
            print("Не найдено" )
    else:
        name, number = data[0],data[1:]
        phone_book[name] = phone_book.get(name,[]) + number
    data = input()
1
-2 / 1 / 0
Регистрация: 11.10.2019
Сообщений: 43
16.03.2020, 22:44  [ТС]
Огромное вам спасибо, вы правда очень, очень помогли
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.03.2020, 22:44
Помогаю со студенческими работами здесь

Телефонная книга
Помогите пожалуйста!!!!:help: Создать телефонную книгу, где идентификатором является имя человека. Человек может иметь несколько номеров...

Телефонная книга
import pickle import sys address_book_data = {} #создаем словарь def vvod_name(): #определяем функцию для ввода key name...

Телефонная книга
Доброго времени суток. нужно выполнить несколько заданий в тел.книги. уже сломал всю голову. обьясните кто может 1.Редактирование...

Телефонная книга
В следующей программе я создаю телефонную книгу в которую пользователь может вводить и создавать пары (имя : телефон) но при попытке...

Телефонная база
Отсортируйте список телефонов по возрастанию и используя сортировку выбором. Телефон задан в виде строки формата nn-nn-nn. Например,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru