← Все вопросы
Хочу сделать простую базу контактов (имя + телефон) — как новичку?
6
Хочу первый проект «телефонная книга»: добавить контакт (имя и номер), посмотреть всех, найти по имени. Сделал на словаре, но при перезапуске программы всё стирается. Как сделать, чтобы контакты сохранялись между запусками? И как вообще аккуратно собрать такой проект?
1 ответ
11
✓ Принятый ответ — помог автору
Твоя задача распадается на «логику в памяти» (словарь) и «сохранение на диск» (файл). Для сохранения проще всего JSON. Вот скелет:
import json
import os
FILE = 'contacts.json'
def load():
if os.path.exists(FILE):
with open(FILE, encoding='utf-8') as f:
return json.load(f)
return {}
def save(data):
with open(FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
contacts = load()
while True:
cmd = input('add / list / find / exit: ')
if cmd == 'add':
name = input('Имя: ')
contacts[name] = input('Телефон: ')
save(contacts)
elif cmd == 'list':
for name, phone in contacts.items():
print(name, '-', phone)
elif cmd == 'find':
name = input('Кого ищем: ')
print(contacts.get(name, 'Не найден'))
elif cmd == 'exit':
break
Идея: при старте читаем файл в словарь, после каждого добавления — пишем обратно. ensure_ascii=False нужен, чтобы русские имена сохранялись читаемо, а не как \u0438\u043c. Это полноценный законченный проект — есть меню, хранение и поиск.
Ваш ответ
, чтобы ответить на вопрос.