Space Python Ładowanie Pythona…

Klauzule strażnicze

Napraw kodŚredni 2 etapy

Komputer dokowania decyduje, czy statek może zadokować. Jego funkcja rosła po jednym warunku naraz, każdy wewnątrz poprzedniego, a powód odmowy siedzi teraz cztery poziomy głęboko, na dalekim końcu else, którego if jest poza górną krawędzią ekranu.

Spłaszcz funkcję, nie zmieniając ani jednej odpowiedzi, a potem dodaj kolejną regułę, o którą prosi zespół dokowania.

Przepisz can_dock() na klauzule strażnicze: sprawdzaj każdy powód odmowy osobno, od razu zwracaj powód, a zgodę zwróć na końcu. Każda odpowiedź musi zostać taka sama:

Dokowanie zatwierdzone
Zbyt duża prędkość
Zbyt duży kąt
Załoga niegotowa
Port zajęty

Zachowaj kolejność sprawdzeń: port, załoga, prędkość, kąt. Odwróć każdy warunek, na przykład if not port_free:, a else nie będzie potrzebne.

Te same odpowiedzi
Płaskie sprawdzenia

Ukończ etap 1, aby odblokować ten etap.

Zespół dokowania dodaje regułę: światła dokowania muszą być włączone. Dodaj parametr lights_on z wartością domyślną True, żeby istniejące wywołania działały dalej, i klauzulę po sprawdzeniu załogi. Testuje to szóste wywołanie:

Dokowanie zatwierdzone
Zbyt duża prędkość
Zbyt duży kąt
Załoga niegotowa
Port zajęty
Światła dokowania wyłączone

Dodaj wywołanie na dole: print(can_dock(0.05, 1.0, True, True, lights_on=False)).

Dodaj regułę
Nadal płasko
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:].