Space Python Ładowanie Pythona…

Planer przelotów

Napisz kodŚredni 2 etapy

Statek na niskiej orbicie może rozmawiać ze stacją naziemną tylko wtedy, gdy jest nad jej horyzontem, po kilka minut naraz. Zespół dynamiki lotu przysyła czasy przelotów dla każdej stacji. Planowanie misji chce ich jako jednej osi czasu: które przeloty są wystarczająco długie na pełny zrzut danych, po kolei, i gdzie są okresy ciszy.

Zbuduj planer.

Zbierz każdy przelot dłuższy niż MIN_MINUTES, ze wszystkich stacji, w windows, jako (start, end, station, minutes) z czasami sparsowanymi przez datetime.fromisoformat(). Posortuj je według początku i wypisz:

Okna łączności dłuższe niż 8 minut:
  06:30:00-06:44:00  Usuda     14.0 min
  08:02:10-08:13:40  Kiruna    11.5 min
  08:10:00-08:19:30  Svalbard   9.5 min
  09:48:00-09:59:10  Svalbard  11.2 min
  11:20:30-11:31:00  Kiruna    10.5 min
  12:50:00-13:02:45  Toruń     12.8 min

Ponieważ każda krotka zaczyna się od czasu początku, windows.sort() ustawia je w kolejności czasu. {start:%H:%M:%S} formatuje samą godzinę.

Długie przeloty, po kolei
Lista windows

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

Znajdź najdłuższą przerwę bez łączności z żadną stacją, między końcem jednego okna a początkiem następnego, i wypisz ją po liście:

Najdłuższa przerwa bez łączności: od 08:19:30 do 09:48:00 (1:28:30)

Okna mogą się nakładać: pierwszy przelot nad Svalbardem zaczyna się przed końcem przelotu nad Kiruną. Trzymaj najpóźniejszy koniec widziany do tej pory w latest_end i licz przerwę tylko wtedy, gdy następne okno zaczyna się po nim.

Najdłuższa przerwa
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

Iterowanie po słowniku

Pętla for domyślnie iteruje po kluczach. values() zwraca wartości. items() zwraca pary klucz-wartość do rozpakowania.
iterowanie-po-slowniku.py
# Iterowanie po słowniku

distances = {
    "Księżyc": 384400,
    "Mars": 225000000,
    "Wenus": 108000000
}

# Iterowanie po kluczach
print("Cele:")
for target in distances:
    print(f"  - {target}")

# Iterowanie po wartościach
print("\nOdległości:")
for km in distances.values():
    print(f"  {km:,} km")

# Iterowanie po parach
print("\nKompletne dane:")
for target, km in distances.items():
    print(f"  {target}: {km:,} km")
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:].