← Все вопросы

Хочу сделать простую базу контактов (имя + телефон) — как новичку?

Задан 32 месяца назад405 просмотров1 ответ
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. Это полноценный законченный проект — есть меню, хранение и поиск.

Ваш ответ

, чтобы ответить на вопрос.