Przetestuj poziomy alarmu
Kontrola alarmów silnika z „Poziomu alarmu” jest teraz funkcją, alert_level(), i zależą od niej inne programy. Zanim ktokolwiek znów ją zmieni, potrzebuje testów: małych sprawdzeń, które działają w sekundę i alarmują, gdy funkcja da złą odpowiedź.
Napisz sprawdzenia. Żeby zobaczyć, czy są dobre, ukryte testy uruchamiają je na zepsutych kopiach funkcji, a dobre sprawdzenia łapią każdą z nich.
Ukończ etap 1, aby odblokować ten etap.
Pod funkcją napisz sprawdzenia assert: jedną temperaturę, która powinna dać OK, jedną dla WARN i jedną dla CRITICAL. Gdy wszystkie są spełnione, wypisz:
Wszystkie sprawdzenia przeszły
Na przykład assert alert_level(20) == "OK". Zostaw funkcję dokładnie taką, jaka jest: ukryte testy psują jej kopie i oczekują, że twoje sprawdzenia to zauważą.
Ukończ etap 1, aby odblokować ten etap.
Błędy ukrywają się na granicach. Dodaj sprawdzenia dla wartości dokładnie na każdym progu i tuż pod nim: 400 i 450 oraz 399.9 i 449.9. Zostaw linię o powodzeniu na końcu.
Ukryte testy psują teraz funkcję tak, jak naprawdę robią to ludzie: > zamiast >= albo próg przesunięty o jeden.
Podpowiedzi
Wczesne wyjście z funkcji
# Wczesne wyjście z funkcji (guard clause)
def check_fuel(level):
"""Sprawdza czy poziom paliwa jest wystarczający."""
if level < 0:
return "Błąd: ujemny poziom"
if level == 0:
return "KRYTYCZNY: Brak paliwa!"
if level < 25:
return "OSTRZEŻENIE: Niski poziom"
if level < 50:
return "OK: Rozważ tankowanie"
return "OK: Paliwo wystarczające"
# Testowanie różnych poziomów
for p in [100, 40, 20, 0, -5]:
status = check_fuel(p)
print(f"Poziom {p}%: {status}")
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].