Space Python Ładowanie Pythona…

Import modułów systemowych

 
0:00 / 0:00

Wyzwanie

Przećwicz to, co pokazuje ten przykład, w tych wyzwaniach.

Prawdziwy JSON

Napisz kodŁatwy 2 etapy

Kod startu z „Odpowiedzi API” działał na gotowym słowniku, ale API naprawdę wysyła tekst JSON. Zamień go na słownik przez json.loads(), zobacz, czym stają się false i null, a potem obsłuż odpowiedź uciętą w transmisji.

Rozpocznij wyzwanie

JSON na wyjściu

Napisz kodŁatwy 2 etapy

Zamień słownik z dziennym podsumowaniem misji na tekst JSON przez json.dumps() i indent=2, zobacz, czym stają się True, False i None, a potem zachowaj czytelne polskie litery stacji i posortuj klucze, żeby pliki łatwo się porównywało.

Rozpocznij wyzwanie

Czas od startu misji

Napisz kodŚredni 2 etapy

Sparsuj znaczniki czasu startu i najnowszej telemetrii przez datetime.fromisoformat(), odejmij je, żeby dostać czas od startu misji, a potem policz czasy zdarzeń zgłoszonych przez stacje naziemne w trzech różnych strefach czasowych.

Rozpocznij wyzwanie

Odliczanie na żywo

Napisz kodŚredni 2 etapy

Rozszerz formatowanie z „Formatowania czasu trwania”: wyliczaj pozostałe sekundy z czasu startu i datetime.now(timezone.utc) zamiast liczby wpisanej ręcznie, a potem zamień to w countdown(), które po starcie liczy w górę z T+.

Rozpocznij wyzwanie

Dziennik w pliku

Napisz kodŁatwy 2 etapy

Zapisz dzisiejsze wpisy dziennika misji do mission.log przez with open(), po jednym w linii, odczytaj plik i go wypisz, a potem dodaj funkcję append_entry(), która dopisuje linie na końcu, nie kasując tego, co już jest.

Rozpocznij wyzwanie

Telemetria z CSV

Napisz kodŚredni 2 etapy

Skieruj parser strumienia z „Przetwórz cały strumień” na telemetry.csv: czytaj go przez csv.DictReader, z nazwami pól z wiersza nagłówka, a potem znajdź najgorętszy odczyt temperatury, porównując wartości jako liczby.

Rozpocznij wyzwanie

Symulacja z ziarnem

Napisz kodŁatwy 2 etapy

Zasymuluj 100 odczytów czujnika, każdy z 5% szans na zakłócenie, i ustaw ziarno random na 42, żeby liczba była taka sama przy każdym uruchomieniu, a test mógł ją dokładnie sprawdzić, a potem wybierz rodzaj każdego zakłócenia przez random.choice().

Rozpocznij wyzwanie

Moduł statistics

Napraw kodŁatwy 2 etapy

Zrefaktoryzuj podsumowanie temperatur: usuń ręcznie napisane mean() i median() i użyj zamiast nich statistics.mean() i statistics.median(), a potem dodaj odchylenie standardowe i obsłuż przeloty ze zbyt małą liczbą odczytów.

Rozpocznij wyzwanie

Counter

Napraw kodŁatwy 2 etapy

Zrefaktoryzuj licznik poziomów z „Wpisów na poziom”: zastąp słownik i counts.get() przez collections.Counter, który zaczyna każdy klucz od 0, a potem wypisz poziomy od najczęstszego do najrzadszego przez most_common().

Rozpocznij wyzwanie

Logowanie zamiast print

Napraw kodŚredni 2 etapy

Sprawdzanie zbiorników jest pełne wypisywań, które zostały po debugowaniu. Zastąp je wywołaniami logging na właściwych poziomach, żeby wpisy debug pozostały ukryte, dopóki się ich nie włączy, a potem daj kodowi paliwa jego własny nazwany logger.

Rozpocznij wyzwanie

Potok telemetrii

Napisz kodTrudny 3 etapy

Mały, ale kompletny potok danych: czytaj CSV z telemetrią, odrzucaj wiersze z nieznanymi czujnikami lub zepsutymi wartościami z podaniem powodu, oznaczaj odczyty poza limitami każdego czujnika i zapisz podsumowanie JSON dla panelu.

Rozpocznij wyzwanie

Zestawienie startów

Napisz kodŚredni 3 etapy

Sparsuj harmonogram startów z JSON-a, zostaw starty, które dopiero nastąpią, posortuj je według okna i wypisz dla każdego linię zestawienia z pozostałym czasem i ewentualnym wstrzymaniem, a potem przełącz zestawienie na żywy zegar.

Rozpocznij wyzwanie

Dyskusja

Utknąłeś przy tym przykładzie albo chcesz pójść dalej? Zapytaj tutaj lub zobacz, o co pytali inni.

Zaloguj się, żeby pytać i odpowiadać.

script.py
PythonWiersz 1, kol. 1Spacje: 4
Ładowanie środowiska Pythona…

Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].