Ustawienia z wartościami domyślnymi
Panel misji ma wartość domyślną dla każdego ustawienia, a profil każdego użytkownika przechowuje tylko to, co ten zmienił. Gdy użytkownik otwiera panel, trzeba połączyć jedno z drugim: jego wartości tam, gdzie je ustawił, wartości domyślne wszędzie indziej.
Połącz ustawienia, a potem spraw, żeby łączenie odrzucało ustawienia, które nie istnieją.
Ukończ etap 1, aby odblokować ten etap.
Zbuduj settings: ustawienia domyślne z wartościami użytkownika na wierzchu. Zostaw DEFAULTS bez zmian, bo dzielą je wszyscy użytkownicy. Potem wypisz każde ustawienie:
units: imperial language: en telemetry_rate_hz: 10 dark_mode: True alerts: all
DEFAULTS.copy() tworzy osobny słownik, a settings.update(user_settings) nadpisuje klucze ustawione przez użytkownika.
Ukończ etap 1, aby odblokować ten etap.
Profil użytkownika ma literówkę: "dark_mod". Przy update() staje się ona szóstym ustawieniem, którego nic nie czyta. Kopiuj tylko klucze, które istnieją w DEFAULTS, a pozostałe zgłoś przed ustawieniami:
Nieznane ustawienie pominięte: dark_mod units: imperial language: en telemetry_rate_hz: 10 dark_mode: True alerts: all
Przejdź pętlą po user_settings.items() i sprawdzaj każdy klucz przez in DEFAULTS.
Podpowiedzi
Modyfikowanie słowników
# Modyfikowanie słowników
planet = {"name": "Mars", "moons": 2}
# Dodawanie nowego klucza
planet["diameter"] = 6779
print("Po dodaniu:", planet)
# Zmiana wartości
planet["moons"] = 3 # Pomyłka - poprawmy
planet["moons"] = 2
print("Po zmianie:", planet)
# Usuwanie elementu
del planet["diameter"]
print("Po del:", planet)
# pop() - usuwa i zwraca wartość
moons = planet.pop("moons")
print("Usunięte księżyce:", moons)
print("Pozostało:", planet)
# update() - dodaje wiele elementów
planet.update({"type": "skalista", "rings": False})
print("Po update:", planet)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].