Python

Программа - телефонный справочник. С чего начать?

Здравствуйте. Есть проблема с выполнением такого задания: написать программу - телефонный справочник, где для номеров телефонов хранятся записи с ФИО и возрастом. Программа выводит меню текстовое и с помощью input принимает выбор пункта меню. Можно добавить запись в книгу, вывести все записи, найти запись по телефону, найти запись по имени, и вывести все записи заданного возраста. Честно, даже не знаю с чего начать, я примерно представляю структуру, но вот с реализацией большие проблемы. Написать нужно без сторонних библиотек.
попробуй начасть с чтения учебника по питону
http://www.russchooljp.com/wp-content/uploads/2017/05/Python.dlya_.detei_.pdf
AH
Armen Hovhannisyan
36 571
Лучший ответ
Я как-то кодил что-то подобное по приколу
могу показать исходник
только он на плюсах
и очень баганый
скажи куда кидать

если интересует вопрос "как", то начни с оболочки
из самого банального - массив структур
в структуру описываешь строка-имя, строка-фамилия, строка-отчество, строка-телефон и других кусков по вкусу
описываешь процедуры добавления, поиска и удаления структуры
потом, тебе надо описать читалку командной строки
ну оно как работает: ты ситаешь строку до символа перевода строки (Enter), разбираешь формат: если первое слово в ней "add", то оставшуюся подстроку передаешь в процедуру добавления
остальное аналогично
можно для оптимизации поиска использовать хеш-функции
смысл в том что ты считаешь хеш телефона человека и добавляешь в соответствующую позицию
потом чтобы найти, нужно будет посчитать хеш от телефона который ты ищешь
но есть дофига проблем например что делать если хеши одинаковые
а еще как например искать номер человека зная его имя (мы же пихали по хешу телефона а не имени)
также это имеет смысл только если у тебя очень много записей в твоей книге т. к. если их мало ты просто срешь все время на "посчитать хеш строки" вместо перебора пяти вариантов
1. Для начала подумайте над тем, как программа будет хранить базу телефонов. Точнее где будет хранить. Т. к. надо без доп. библиотек, то как минимум есть три варианта - список (а точнее список списков), словарь и бд sqlite.
-> списки: + легко добавить, - "трудозатратно" удалить, т. к для поиска элемента надо перебрать от одного до всех элементов.
db = [[1234567,"Мылорушный Олег", 56], [1233467,"Мылорушная Ольга", 599]]
-> словари: + просто добавить, - поиск зависит от критериев поиска и что используется для хеша
db = {12344: ['Мылорушный Олег', '56'], 2312312: ['Мылорушный Олег', '56']}
-> sqlite - реляционная бд. просто добавить, просто удалить, просто искать, но надо понимать sql(а может и не надо, надо доку глянуть)
2. На основе базы делай класс, который будет работать с этой базой. В ней должны быть
a) сама база в виде поля класса
б) функции для работы с базой
В простейшем виде каркас будет такой (см. картинку)
3. Делаешь менюшку.
В начале создаешь экземпляр класса из этапа 2., а потом уже менюшку. В меню реализуешь бесконечный цикл с принятием и проверкой символа от пользователя. При проверку вызываете нужную функцию, которая будет вызывать функции класса из этапа 2.
RM
Revan Mamedov
1 097
Создай словарь, у которого ключ и несколько значений, его можно будет дополнять или вносить что-то новое, всё это можно красиво оформить графически