Zadanie domowe zaległe - książka kontaktowa

Zadanie domowe zaległe - książka kontaktowa
Photo by Brett Jordan / Unsplash

Tyle na razie udało mi się uzupełnić z naszej książki kontaktowej. Od jutra będę działać z nią dalej 😄

import json
import os

if os.path.exists("kontakty.json"):
    with open("kontakty.json", "r", encoding = "utf8") as plik:
        kontakty = json.load(plik)
else:
    kontakty = {}

while True:
    menu = """
    Wybierz operację do wykonania:
    1. dopisanie pozycji do ksiażki
    2. aktualizacja pozycji książki
    3. usunięcie pozycji
    4. wydruk imion z książki
    5. wydruk całej książki
    6. koniec
"""

    print(menu)

    try:
       kod_operacji = int(input("Wybierz kod operacji: "))
    except ValueError:
       print("Musisz wpisać liczbę od 1 do 6!")
       continue

    if kod_operacji == 1:
        print("Wybrano dopisanie pozycji do książki")
        nowy_kontakt = input("Wpisz nazwę nowej pozycji: ")
        if nowy_kontakt not in kontakty:
            nowe_dane = input("Wpisz dane kontaktowe: ")
            kontakty[nowy_kontakt] = nowe_dane
            print("Dodano nowy kontakt.")
        else:
            print("Kontakt już istnieje")

    elif kod_operacji == 2:
        print("Wybrano aktualizację pozycji książki")
        nazwa = input("Wpisz nazwę do aktualizacji: ")
        if nazwa in kontakty:
            nowe_dane = input("Wpisz nowe dane: ")
            kontakty[nazwa] = nowe_dane
            print("Kontakt zaktualizowany.")
        else:
            print("Nie ma takiego kontaktu.")
        
    elif kod_operacji == 3:
        print("Wybrano usunięcie pozycji z książki")
        nazwa = input("Podaj nazwę/imie kontaktu, który chcesz usunąć: ")
        if nazwa in kontakty:
            kontakty.pop(nazwa)
            print("Kontakt został usunięty.")
        else:
            print("Nie ma takiego kontaktu.")

    elif kod_operacji == 4:
        print("Wybrano wydruk imion z książki")
        for imie in kontakty:
            print(imie, end=", ")
        print()
        liczba_kontaktow = len(kontakty)
        if liczba_kontaktow == 1:
            koncowka = "kontakt"
        elif 2 <= liczba_kontaktow % 10 <= 4 and not (12 <= liczba_kontaktow % 100 <= 14):
            koncowka = "kontakty"
        else:
            koncowka = "kontaktów"
        print(f"Książka zawiera {liczba_kontaktow} {koncowka}.")

    elif kod_operacji == 5:
        print("Wybrano wydruk całej książki:")
        for imie, dane in kontakty.items():
            print(f"{imie}: {dane}")

    elif kod_operacji == 6:
        print("Wybrano zamknięcie programu.")
        while True:
            pytanie = input("Czy chcesz zapisać zmiany? Tak - T, Nie - N: ").strip().upper()
            if pytanie in ("T", "N"):
                break
            print("Nieprawidłowa odpowiedź. Wpisz T albo N.")

        if pytanie == "T":
            with open("kontakty.json", "w", encoding="utf-8") as plik:
                json.dump(kontakty, plik, ensure_ascii=False, sort_keys=True, indent=4)
            print("Zmiany zostały zapisane.")
        else:
            print("Zmiany nie zostały zapisane.")
        break

    else:
        print("Nie ma takiej opcji. Wybierz od 1 do 6.")