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"
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