Space Python Ładowanie Pythona…

Ponów wysyłkę

Napisz kodŚredni 2 etapy

Polecenia do statku nie zawsze docierają za pierwszym razem: radio może przekroczyć czas oczekiwania albo zgubić nośną. Oprogramowanie łącza próbuje jeszcze raz, ale tylko kilka razy, żeby martwe łącze nie blokowało wszystkiego innego.

Napisz pętlę ponowień na symulatorze, który odtwarza odpowiedzi radia, a potem rozłóż próby w czasie.

Próbuj maksymalnie MAX_ATTEMPTS razy. Próba 1 dostaje pierwszy wynik z listy, próba 2 drugi i tak dalej. Wypisz każdą próbę, zatrzymaj się na pierwszym "ok", a potem powiedz, jak się skończyło:

Próba 1: timeout
Próba 2: no carrier
Próba 3: ok
Wysłano w próbie nr 3

Gdy wszystkie trzy zawiodą, ostatnia linia to Wysyłka nieudana, wykorzystane próby: 3. Przejdź pętlą po range(1, MAX_ATTEMPTS + 1), przerwij przez break przy sukcesie i użyj flagi takiej jak sent, żeby odróżnić oba zakończenia.

Ponawiaj, aż się uda
Zatrzymuje się na limicie

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

Natychmiastowe ponawianie rzadko pomaga przeciążonemu łączu. Czekaj 2 sekundy po pierwszej porażce, potem dwa razy dłużej po każdej następnej, ale nie czekaj po ostatniej próbie, bo nic po niej nie następuje:

Próba 1: timeout
Czekam 2 s
Próba 2: no carrier
Czekam 4 s
Próba 3: ok
Wysłano w próbie nr 3

Ustaw delay_s = 2 przed pętlą. Po porażce, jeśli attempt < MAX_ATTEMPTS, wypisz czekanie i podwój delay_s. (Symulator tylko wypisuje czekanie; prawdziwy kod wywołałby time.sleep(delay_s).)

Czekaj między próbami
Bez czekania po ostatniej próbie
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

Break i continue w pętlach

break natychmiast kończy pętlę. continue pomija resztę bieżącej iteracji i przechodzi do następnej. Kontrola przepływu w pętlach.
break-continue-petlach.py
# break - przerywa pętlę całkowicie
print("Szukanie anomalii:")
data = [10, 12, 11, 9, 50, 8, 7]

for value in data:
    if value > 20:
        print(f"ANOMALIA: {value}")
        break
    print(f"Wartość OK: {value}")

# continue - pomija resztę iteracji
print("\nFiltrowanie danych:")
results = [5, -2, 10, -8, 15, -3]

for result in results:
    if result < 0:
        continue  # Pomijamy ujemne
    print(f"Poprawny wynik: {result}")
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:].