Войти
или
Зарегистрироваться
Маркетплейс
Курсы
Учебник
Учебник 2.0
ОГЭ/ЕГЭ
Олимпиады
Рубрикатор
Компилятор
Онлайн Компилятор
Компилятор Python с отладкой
Питон - Черепашка
Редактор HTML Code
SQLite Studio - работа с БД
Статья Автор:
Сабрина Торехан
Da
# --------------------------- # Консольная записная книжка # --------------------------- # Исходные данные (главный словарь контактов) contacts = { 'Димаш Кудайберген': { 'phones': ['+77011234567'], 'emails': ['dimash.dears@official.kz', 'dima.kudaibergen@music.com'], 'notes': 'Казахстанский певец, обладатель уникального вокального диапазона.' }, 'Геннадий Головкин': { 'phones': ['+77770001122'], 'emails': [], 'notes': 'Профессиональный боксер, чемпион мира в среднем весе.' }, 'Баян Алагузова': { 'phones': ['+77079998877'], 'emails': ['bayan.maxatkyzy@media.kz'], 'notes': 'Известный продюсер и телеведущая Казахстана.' }, 'Илья Ильин': { 'phones': ['+77053334455'], 'emails': ['ilya@ilsport.kz'], 'notes': 'Тяжелоатлет, многократный чемпион мира.' } } # 1. Показать все контакты (только имена) ----------------------- def view_all_names(): """Вывести имена всех контактов в алфавитном порядке.""" if not contacts: print("Записная книжка пуста.") return print("\nСписок контактов:") for name in sorted(contacts.keys()): print(" -", name) print() # пустая строка для красоты # 2. Добавить новый контакт ------------------------------------- def add_contact(): """Добавить новый контакт с пустыми списками телефонов и email.""" name = input("Введите имя нового контакта: ").strip() if not name: print("Ошибка: имя не может быть пустым.") return if name in contacts: print(f"Ошибка: контакт '{name}' уже существует.") return contacts[name] = { 'phones': [], 'emails': [], 'notes': '' } print(f"Контакт '{name}' успешно добавлен.\n") # 3. Показать детали контакта ----------------------------------- def view_details(): """Показать все данные по выбранному контакту.""" name = input("Введите имя контакта для просмотра: ").strip() if name not in contacts: print(f"Ошибка: контакт '{name}' не найден в записной книжке.\n") return data = contacts[name] print(f"\nДетали контакта: {name}") print("Телефоны:") if data['phones']: for phone in data['phones']: print(" -", phone) else: print(" (нет телефонов)") print("Emails:") if data['emails']: for email in data['emails']: print(" -", email) else: print(" (нет email)") print("Заметка:") if data['notes']: print(" ", data['notes']) else: print(" (пока пусто)") print() # 4. Изменить или добавить данные контакта ----------------------- def modify_data(): """Добавить телефон/email или изменить заметку существующего контакта.""" name = input("Введите имя контакта для изменения: ").strip() if name not in contacts: print(f"Ошибка: контакт '{name}' не найден.\n") return contact = contacts[name] print("\nЧто вы хотите сделать?") print("1. Добавить телефон") print("2. Добавить email") print("3. Изменить заметку") choice = input("Ваш выбор: ").strip() if choice == '1': new_phone = input("Введите новый номер телефона: ").strip() if new_phone: contact['phones'].append(new_phone) print("Телефон добавлен.\n") else: print("Номер не может быть пустым.\n") elif choice == '2': new_email = input("Введите новый email: ").strip() if new_email: contact['emails'].append(new_email) print("Email добавлен.\n") else: print("Email не может быть пустым.\n") elif choice == '3': new_note = input("Введите новую заметку: ").strip() contact['notes'] = new_note print("Заметка обновлена.\n") else: print("Неизвестная команда. Изменения не выполнены.\n") # 5. Удалить контакт --------------------------------------------- def delete_contact(): """Удалить контакт по имени.""" name = input("Введите имя контакта для удаления: ").strip() if name not in contacts: print(f"Ошибка: контакт '{name}' не найден.\n") return confirm = input(f"Точно удалить '{name}'? (y/n): ").strip().lower() if confirm == 'y': # можно использовать и del, и pop contacts.pop(name) print(f"Контакт '{name}' удалён.\n") else: print("Удаление отменено.\n") # 6. Поиск по данным --------------------------------------------- def search_data(): """ Поиск контактов по части имени, телефону или тексту заметки. Ищем в: - имени - каждом телефоне - каждом email - заметке """ pattern = input("Введите строку для поиска: ").strip().lower() if not pattern: print("Строка поиска не может быть пустой.\n") return found = False print("\nРезультаты поиска:") for name, data in contacts.items(): name_lower = name.lower() note_lower = data['notes'].lower() match = False # По имени if pattern in name_lower: match = True # По заметке if pattern in note_lower: match = True # По телефонам for phone in data['phones']: if pattern in phone.lower(): match = True break # По email for email in data['emails']: if pattern in email.lower(): match = True break if match: found = True print(f"- {name}") if not found: print("Ничего не найдено.") print() # Главный цикл программы ----------------------------------------- def main(): while True: print("Меню:") print("1. Показать все контакты") print("2. Добавить новый контакт") print("3. Показать детали контакта") print("4. Изменить/добавить данные контакта") print("5. Удалить контакт") print("6. Поиск по данным") print("7. Выход") choice = input("Ваш выбор: ").strip() if choice == '1': view_all_names() elif choice == '2': add_contact() elif choice == '3': view_details() elif choice == '4': modify_data() elif choice == '5': delete_contact() elif choice == '6': search_data() elif choice == '7': print("До свидания!") break else: print("Неизвестная команда, попробуйте снова.\n") if __name__ == "__main__": main()
×
Чтобы оставить комментарий нужна авторизация
Печать