Niekończące się czekanie
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ć.
Ukończ etap 1, aby odblokować ten etap.
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.
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
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ą.
Podpowiedzi
Pętla while - podstawy
# 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!")
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].