Stary skrypt
Każda misja ma taki skrypt: napisany w noc przed startem, którego wszyscy wciąż używają i którego nikt nie ma odwagi ruszyć. Ten wypisuje dzienny raport silników. Powtarza te same dwanaście linii dla każdego silnika, zmienne nazywają się t, m i s, a w przyszłym miesiącu montowany jest czwarty silnik.
Przebuduj go, nie zmieniając ani jednego znaku w tym, co wypisuje, a potem dopilnuj, żeby tak zostało.
Ukończ etap 1, aby odblokować ten etap.
Przebuduj skrypt wokół dwóch funkcji, zachowując wynik dokładnie taki, jaki jest teraz:
parse_feed(feed)zwraca słownik z każdego czujnika do listy jego wartości, jako float, po kolei;summary_line(sensor, values)zwraca jedną linię raportu: średnią zaokrągloną do jednego miejsca po przecinku, największą wartość iHOT, gdy przekracza 450, w przeciwnym razieOK.
Potem wypisz raport pętlą po liście silników. Wynik, przed i po:
RAPORT SILNIKÓW =============== ENG-1 średnia 425.6 maks. 431.75 OK ENG-2 średnia 400.4 maks. 402.25 OK ENG-3 średnia 440.1 maks. 455.0 HOT Przegrzane silniki: 1
Najpierw uruchom oryginał i zachowaj jego wynik do porównania. Ukryte testy sprawdzają też, że kopie bloku zniknęły.
Ukończ etap 1, aby odblokować ten etap.
Dodaj testy assert dla obu funkcji, co najmniej cztery, między funkcjami a raportem. Gdy wszystko jest dobrze, niczego nie wypisują, więc wynik zostaje dokładnie taki sam. Przetestuj parse_feed() na małych własnych danych, a summary_line() na silniku HOT i na silniku OK.
Ukryte testy psują po cichu każdą z twoich funkcji, jedną tak, żeby gubiła ostatni odczyt każdego silnika, a drugą tak, żeby pomijała pierwszą wartość i nigdy nie mówiła HOT, i uruchamiają twój program jeszcze raz: twoje asserty muszą zatrzymać obie.
Podpowiedzi
Tworzenie prostych funkcji
# Definiowanie funkcji
def greeting():
"""Wyświetla powitanie misji."""
print("=" * 30)
print("Witaj w Centrum Kontroli!")
print("=" * 30)
# Wywołanie funkcji
greeting()
# Funkcja może być wywołana wielokrotnie
def status_report():
print("Systemy: OK")
print("Paliwo: 100%")
print("Załoga: Gotowa")
status_report()
print()
status_report()
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].