Space Python Ładowanie Pythona…

Spłaszcz zagnieżdżone if

Napraw kodŚredni 2 etapy

Kontrola dokowania do stacji działa, ale rozrosła się w trzy instrukcje if jedna w drugiej, z HOLD wypisanym trzy razy. Każda nowa zasada przesuwałaby kod jeszcze bardziej w prawo.

Spłaszcz ją do jednego warunku bez zmiany tego, co wypisuje, a potem przepisz tak, żeby HOLD mówiło, która kontrola zawiodła.

Dokowanie dostaje GO tylko wtedy, gdy przechodzą wszystkie trzy kontrole: prędkość zbliżania jest mniejsza niż 0.1 m/s, ustawienie odchyla się o mniej niż 2 stopnie, a zatrzaski są gotowe. Zastąp trzy zagnieżdżone if jednym if, który łączy kontrole przez and, i jednym else. Wynik nie może się zmienić:

Dokowanie: GO

Jakiekolwiek byłyby odczyty, twoja wersja musi wypisać dokładnie to, co zagnieżdżona.

Zachowaj wynik
Jeden płaski warunek

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

Załoga chce wiedzieć, dlaczego dokowanie jest wstrzymane. Przepisz kontrolę jako jeden płaski łańcuch, który po kolei sprawdza każdy problem i zgłasza pierwszy znaleziony; GO trafia do else na końcu:

Dokowanie: HOLD, za duża prędkość zbliżania
Dokowanie: HOLD, złe ustawienie
Dokowanie: HOLD, zatrzaski niegotowe
Dokowanie: GO

Najpierw sprawdź prędkość, potem ustawienie, potem zatrzaski. Żadnego if wewnątrz innego if. Przy dzisiejszych odczytach nadal wypisuje GO.

Zgłoś pierwszą niespełnioną kontrolę
Płasko, bez zagnieżdżeń
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

Operatory logiczne and, or, not

Operatory logiczne łączą warunki. and wymaga obu prawd, or wystarczy jedna, not odwraca wartość logiczną.
operatory-logiczne-and-or-not.py
# Operatory logiczne

fuel = 80
crew = True
weather = "dobra"

# AND - oba warunki muszą być prawdziwe
if fuel > 50 and crew:
    print("Podstawowe warunki spełnione")

# OR - wystarczy jeden warunek
if weather == "dobra" or weather == "akceptowalna":
    print("Warunki atmosferyczne OK")

# NOT - negacja
failure = False

if not failure:
    print("Brak awarii - można startować")

# Złożone warunki
if fuel > 50 and crew and not failure:
    print("WSZYSTKIE SYSTEMY GOTOWE!")
else:
    print("Start wstrzymany")
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:].