Rozdział 12 · Wiele fascynujących mini-projektów!

: Notes

Dictionary jako naturalne repozytorium „nazw → telefon”

Zastosowanie
dictif/elifциклыf-строки
Poziom
★★ średni
Rezultat
menu tekstowe

Co tworzymy

Kontakty w pamięci programu: pokaż wszystkie kontakty, dodaj, znajdź, Zmień, usuń.

Model danych

contacts (dict)
"Anna" → "+48 111 111 111"
"Bob" → "+48 222 222 222"
Kluczem jest imię, wartość to telefon. Dlaczego dict? Bo szukamy kontaktu po imieniu, a nie po pozycji
Dlaczego słownik, a nie lista
Listę trzeba by przeszukać w całości w poszukiwaniu potrzebnej nazwy. Słownik od razu daje dostęp po kluczu (rozdział 11) — contacts["Anna"], bez przesady.

Działania

zapisnaya_knizhka.py
contacts = {
    "Anna": "+48 111 111 111",
    "Bob": "+48 222 222 222",
}

# pokaż wszystkie kontakty
for name, phone in contacts.items():
    print(f"{name}: {phone}")

# dodaj kontakt
contacts["Maria"] = "+48 333 333 333"

# znajdź kontakt
zapros = "Anna"
if zapros in contacts:
    print(f"Znaleziono: {contacts[zapros]}")
else:
    print(„Kontakt nie znaleziony”)

# zmień kontakt
contacts["Anna"] = "+48 111 000 000"

# usuń kontakt
del contacts["Bob"]

print(„Kontakty zostawione:”, len(contacts))

Poziom 2: Interaktywne menu

To samo, ale sterowane poleceniami zamiast sztywno zapisanej sekwencji działań — zapowiedź konsoli poleceń z §12.10:

zapisnaya_knizhka_menu.py
contacts = {}

while True:
    command = input(„Drużyna (add/show/exit):”).strip().lower()
    if command == "exit":
        break
    elif command == "add":
        name = input(„Nazwa: ”)
        phone = input(„Telefon: ”)
        contacts[name] = phone
    elif command == "show":
        for name, phone in contacts.items():
            print(f"{name}: {phone}")
Gdy program się kończy, contacts zniknie
contacts istnieje tylko w pamięci, dopóki działa program — to zwykłe zmienna (rozdział 3). Aby dane były zachowane między uruchomieniami, będą potrzebne pliki — temat jednego z kolejnych rozdziałów.

Trochę głębiej – kontakt z kilkoma dziedzinami

Jeśli kontakt potrzebuje więcej niż jednej wartości (telefon I email), zewnętrzny słownik może przechowywać zagnieżdżone słowniki (rozdział 11, §11.19):

zapisnaya_knizhka_vlozhennaya.py
contacts = {
    "Anna": {"phone": "+48 111 111 111", "email": "anna@example.com"},
}
print(contacts["Anna"]["email"])

Debug Lab

debug_lab_contacts.py
contacts = {"Anna": "+48 111 111 111"}
print("+48 111 111 111" in contacts)   # False!
in słownik sprawdza klucze, a nie wartości
Ta sama pułapka z rozdziału 11 (§11.19): in wyszukiwania w KLUCZACH. Aby sprawdzić, czy taki numer telefonu jest jednym ze znaczeń, musisz "+48 111 111 111" in contacts.values().
Praktyka: notes — dodaj, znajdź, zmień, usuń
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →