Kontaktowa - rozwinięcie (definicje)

Kontaktowa - rozwinięcie (definicje)
Photo by Brett Jordan / Unsplash
import json
import os


def wczytaj(nazwa_pliku: str) -> dict: #ten str i dict są opcjonalne ("savoir vivre")
    if os.path.exists(nazwa_pliku): #sprawdza, czy plik istnieje
        with open(nazwa_pliku, encoding = "utf8") as wczytane:
            return json.load(wczytane)
    else:
        return {}

def zapisz(nazwa_pliku: str, kontakty: dict):
    with open(nazwa_pliku, "w", encoding = "utf8") as zapis:
        return json.dump(kontakty, zapis, indent=2, sort_keys=True)
    
nazwa_pliku = input("Podaj nazwę pliku do wczytania w rozszerzeniu .json: ")
kontakty = wczytaj(nazwa_pliku)

while True:
    # Zapytanie o wybranie operacji
    operacja = input(
        """
        Wybierz operację do wykonania:
                  1 - dopisanie pozycji do książki
                  2 - aktualizacja pozycji książki
                  3 - usunięcie pozycji książki
                  4 - wydruk imion z książki
                  5 - wydruk całej książki z kontaktami
                  6 - koniec programu
        Podaj kod operacji = """
    )


    # Wykonanie wybranej operacji
    if operacja == "1":
        print("Wybrano 1\n")
        nazwa = input("Wpisz imię/nazwę dla nowego wpisu: ")
        if nazwa in kontakty.keys():
            print("Kontakt o podanej nazwie już istnieje.\n")
            breakpoint
        else:
            dane = input("Wpisz dane kontaktowe: ")
            kontakty[nazwa]=dane

    elif operacja == "2":
        print("Wybrano 2\n")
        nazwa = input("Podaj imię/nazwę wpisu, który chcesz zaktualizować: ")
        if nazwa not in kontakty.keys():
            print("Podana nazwa nie istnieje.\n")
            breakpoint
        else:
            dane = input("Podaj nowe dane kontaktowe: ")
            kontakty[nazwa]=dane

    elif operacja == "3":
        print("Wybrano 3\n")
        nazwa = input("Podaj imię/nazwę wpisu, który chcesz usunąć: ")
        if nazwa not in kontakty.keys():
            print("Podana nazwa nie istnieje.\n")
            breakpoint
        else:
            kontakty.pop(nazwa)
            print(f"Usunięto kontakt: {nazwa}")

    elif operacja == "4":
        print("Wybrano 4\n")
        for nazwa in kontakty.keys():
            print(nazwa)

    elif operacja == "5":
        print("Wybrano 5\n")
        for imie, dane in kontakty.items():
            print(f"Imię: {imie} \nDane kontaktowe: {dane} \n------------")


    elif operacja == "6":
        break


    elif operacja == "8":
        print("Wybrano 8\n")



    else:
        print("\nPodano błędny kod operacji")


zapisz(nazwa_pliku, kontakty)


# Koniec programu
print("\nKoniec programu")