Cicha gałąź
Publiczna tablica startów koloruje każdy start według statusu: zielone dla Go, pomarańczowe dla Hold, czerwone dla Scrub. Go i Hold wyglądają dobrze. Odwołane starty nie mają żadnego koloru i nikt tego nie zauważył, dopóki start nie został odwołany na żywo w telewizji.
Przewidź, co wypisze tablica, sprawdź, które statusy przelatują przez funkcję, napraw ją, a potem napisz taką, w której żadna ścieżka nie zostaje bez odpowiedzi.
Ukończ etap 1, aby odblokować ten etap.
Nie uruchamiaj jeszcze kodu. Przeczytaj go i zdecyduj, co wypisze w ostatniej linii. Wpisz swoje przewidywanie w prediction, na górze, w cudzysłowie. Potem uruchom kod i porównaj.
Na tym etapie zalicza każde przewidywanie: chodzi o to, żeby pomyśleć przed uruchomieniem. Po sprawdzeniu zobaczysz swoje przewidywanie obok tego, co wypisał Python.
Prześledź "Scrub" przez funkcję aż do jej końca.
Ukończ etap 1, aby odblokować ten etap.
Zbadaj. Zapisz, co oddają status_light("Scrub") i status_light("TBD"), jako tekst, w scrub_gives i unknown_gives.
Zmień. Spraw, żeby każda ścieżka przez funkcję zwracała kolor: czerwone dla Scrub i szare dla każdego innego statusu. Tablica pokazuje teraz też TBD i ma wypisać:
Go: zielone Hold: pomarańczowe Scrub: czerwone TBD: szare
Ukończ etap 2, aby odblokować ten etap.
Napisz battery_state(percent): pełna od 80% w górę, w normie od 20% w górę i niska poniżej. Upewnij się, że każda ścieżka zwraca wynik. Potem wypisz:
95%: pełna 80%: pełna 41%: w normie 20%: w normie 7%: niska
Sprawdzaj od góry i zwracaj, gdy tylko znasz odpowiedź; ostatnia linia funkcji obejmuje wszystko, co zostało.
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:].