Wspólna lista domyślna
Każda seria pomiarów powinna zaczynać czysty dziennik. Poranna tak zaczęła. Wieczorna zaczęła z porannym pomiarem już w środku, a pod koniec tygodnia każdy nowy dziennik zawierał każdy pomiar, jaki kiedykolwiek wykonano.
Przewidź, co wypisze program, sprawdź, skąd biorą się stare pomiary, napraw wartość domyślną, a potem napisz funkcję, która od początku robi to dobrze.
Ukończ etap 1, aby odblokować ten etap.
Nie uruchamiaj jeszcze kodu. Przeczytaj go i zdecyduj, co wypisze w pierwszej linii. Wpisz swoje przewidywanie w prediction, na górze, w cudzysłowie. Potem uruchom kod i porównaj.
Na tym etapie zalicza każde przewidywanie: chodzi o to, żeby pomyśleć przed uruchomieniem. Po sprawdzeniu zobaczysz swoje przewidywanie obok tego, co wypisał Python.
Lista domyślna: powstaje raz czy przy każdym wywołaniu?
Ukończ etap 1, aby odblokować ten etap.
Zbadaj. Sprawdź przez morning is evening, czy oba wyniki to ta sama lista, i zapisz True albo False w same_list. Ustal, ile pomiarów zwróciłoby trzecie wywołanie bez dziennika, i zapisz to w third_count. Przed sprawdzeniem usuń dodane linie.
Zmień. Daj każdemu wywołaniu bez dziennika jego własną nową listę. Ma wypisać:
Rano: ['ENG-2 412.5'] Wieczorem: ['CABIN 101.2']
Ukończ etap 2, aby odblokować ten etap.
Napisz new_record(sensor, value, flags=None), która zwraca słownik z nową listą flags, gdy żadnej nie podano. Program oznacza pierwszy rekord, a drugi musi zostać czysty:
{'sensor': 'ENG-2', 'value': 455.2, 'flags': ['check']}
{'sensor': 'CABIN', 'value': 101.2, 'flags': []}Użyj tego samego wzorca z None; nie pisz flags=[].
Podpowiedzi
Wartości domyślne parametrów
# Parametry z wartościami domyślnymi
def ship_status(name, fuel=100, crew=True):
print(f"Statek: {name}")
print(f"Paliwo: {fuel}%")
print(f"Załoga na pokładzie: {crew}")
print()
# Wszystkie argumenty
ship_status("Explorer", 75, True)
# Tylko wymagane
ship_status("Voyager")
# Mieszane - argumenty nazwane
ship_status("Pioneer", crew=False)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].