Space Python Ładowanie Pythona…

Niekończące się czekanie

Napraw kodŁatwy 3 etapy

Po każdym przelocie za planetą odbiornik czeka, aż sygnał anteny będzie dość silny, żeby go złapać. Kod czekania powinien wypisywać linię co sekundę, a potem zgłosić złapanie sygnału. Zamiast tego ekran stacji naziemnej zapełnia się tą samą linią, w kółko, dopóki ktoś nie zatrzyma programu.

Przewidź, co robi program, sprawdź, dlaczego się nie kończy, napraw go, a potem napisz czekanie, które wie, kiedy się poddać.

Nie uruchamiaj jeszcze kodu. Przeczytaj go i zdecyduj, co wypisze. 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ź second przez pętlę: kiedy warunek stanie się fałszywy?

Ten program sam się nie kończy. Uruchom go i patrz na konsolę: ochrona przed pętlą zatrzyma go po chwili. Programu, który się nie kończy, nie da się sprawdzić, więc potem postaw # przed linią while i linią wewnątrz pętli, a następnie sprawdź: zobaczysz swoje przewidywanie obok tego, co zrobiła pętla.

Przewiduj, potem uruchom

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

Zbadaj. Wypisz second w pętli, żeby zobaczyć, ile wynosi przy każdym obrocie, i zapisz tę liczbę w second_each_time. Potem ustal, ile byłoby linii z czekaniem, gdyby second rosło o 1 przy każdym obrocie, i zapisz to w waiting_lines. Przed sprawdzeniem usuń dodane linie.

Zmień. Spraw, żeby pętla przy każdym obrocie przechodziła do następnego odczytu. Ma wypisać:

T+0s: 3 dB, czekam na sygnał
T+1s: 8 dB, czekam na sygnał
T+2s: 15 dB, czekam na sygnał
T+3s: 42 dB, czekam na sygnał
Sygnał złapany w T+4s
Znajdź zablokowany licznik
Przechodź dalej przy każdym obrocie

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

Przy słabszym przelocie sygnał może nigdy nie dojść do 60 dB, a pętla wyszłaby poza koniec listy. Czekaj, dopóki są jeszcze odczyty i siła jest poniżej LOCK_DB, a potem wypisz, kiedy złapano sygnał, albo że go nie złapano:

Brak sygnału po 6 s

Po pętli second < len(strengths) odróżnia oba zakończenia. W warunku while sprawdź długość jako pierwszą.

Poddaj się, gdy skończą się odczyty
Działa dla każdego przelotu
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

Pętla while - podstawy

Pętla while wykonuje się dopóki warunek jest prawdziwy. Trzeba zadbać o zmianę warunku, aby uniknąć nieskończonej pętli.
petla-while-podstawy.py
# Pętla while - dopóki warunek jest True

fuel = 100

print("Symulacja zużycia paliwa:")
while fuel > 0:
    print(f"Paliwo: {fuel}%")
    fuel -= 25

print("Paliwo wyczerpane!")

# Odliczanie
countdown = 5
print("\nStart rakiety:")
while countdown > 0:
    print(countdown)
    countdown -= 1
print("LIFTOFF!")
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:].