Space Python Ładowanie Pythona…

Przetestuj poziomy alarmu

Napisz kodŚredni 2 etapy

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.

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żą.

Sprawdzenia, które przechodzą
Sprawdzenia, które łapią błędy

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.

Sprawdzenia, które przechodzą
Sprawdzenia, które łapią błędy na granicach
Nie jesteś zalogowany, więc postęp zostaje tylko w tej przeglądarce. Zaloguj się, aby go zapisać i korzystać z podpowiedzi oraz rozwiązań.

Podpowiedzi

Wczesne wyjście z funkcji

return może być użyte do wcześniejszego wyjścia z funkcji. Wzorzec "guard clause" sprawdza warunki na początku funkcji.
wczesne-wyjscie-z-funkcji.py
# 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}")
Otwórz cały przykład
script.py
PythonWiersz 1, kol. 1Spacje: 4
Ładowanie środowiska Pythona…

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