Brakujący odczyt
Czujniki nie zawsze odpowiadają. Gdy któryś pominie odczyt, sterownik przekazuje twojej kontroli alarmu None zamiast liczby, a kontrola z „Poziomu alarmu” zatrzymuje się z błędem TypeError w połowie przebiegu.
Rozbuduj swoją kontrolę, żeby brakujący odczyt był zgłaszany, a nie powodował awarii, a potem obsłuż brakujące wartości także w kanale telemetrii.
Ukończ etap 1, aby odblokować ten etap.
Kod startowy to twoja kontrola z „Poziomu alarmu”, ale tym razem czujnik nie odpowiedział i temperature_c to None. Uruchom go: porównanie None z liczbą kończy się błędem TypeError. Najpierw sprawdź None, żeby program wypisał:
ENG-2: NO DATA
Użyj temperature_c is None, a istniejący łańcuch z jego print przenieś do else, z wcięciem o cztery spacje więcej. Nie używaj if not temperature_c: 0 °C to prawdziwy odczyt.
Ukończ etap 1, aby odblokować ten etap.
Odczyty przychodzą teraz z kanału telemetrii, a brakująca wartość pokazuje się jako puste pole: dwa przecinki bez niczego pomiędzy. Kod startowy rozkłada linię i zatrzymuje się z błędem ValueError, bo float("") nie ma sensu. Sprawdź pole przed konwersją:
ENG-2: NO DATA
Najpierw usuń spacje z pola, żeby pole z samą spacją też liczyło się jako puste, a potem porównaj je z "". Konwertuj przez float() dopiero w else.
Podpowiedzi
Instrukcja if-elif-else
# If-elif-else: wiele warunków
speed = 25000 # km/h
if speed < 1000:
print("Faza: Start")
elif speed < 10000:
print("Faza: Wznoszenie")
elif speed < 28000:
print("Faza: Orbitowanie")
else:
print("Faza: Prędkość ucieczki!")
# Ocena misji
points = 85
if points >= 90:
rating = "Doskonała"
elif points >= 75:
rating = "Dobra"
elif points >= 60:
rating = "Zadowalająca"
else:
rating = "Do poprawy"
print(f"Ocena misji: {rating}")
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].