Nazwy z wartościami
Dekoder telemetrii przekazuje każdą ramkę jako osobne listy: nazwy czujników w jednej, odczyty w drugiej, w pasującej kolejności. Ekran potrzebuje ich z powrotem razem: każdej nazwy obok jej wartości.
Połącz listy w pary, dodaj jednostki i upewnij się, że ekran zauważy, gdy listy do siebie nie pasują.
Ukończ etap 1, aby odblokować ten etap.
Wypisz każdy czujnik z jego odczytem, przechodząc przez obie listy jednocześnie:
ENG-1: 398.0 ENG-2: 412.5 TANK-1: 78.3 CABIN: 101.2
zip(sensors, readings) daje pary: pierwszy czujnik z pierwszym odczytem i tak dalej. Rozpakuj każdą parę w nagłówku pętli.
Ukończ etap 1, aby odblokować ten etap.
Dodaj jednostki pod odczytami i wypisz każdą wartość z jej jednostką:
units = ["C", "C", "%", "kPa"]
ENG-1: 398.0 C ENG-2: 412.5 C TANK-1: 78.3 % CABIN: 101.2 kPa
zip() przyjmuje trzy listy równie łatwo jak dwie. Ale jeśli jedna lista jest krótsza, kończy wcześniej bez słowa i odczyt znika z ekranu. Przed pętlą sprawdź, czy trzy długości są równe, a jeśli nie, najpierw wypisz ostrzeżenie:
Uwaga: czujniki 4, odczyty 3, jednostki 4 ENG-1: 398.0 C ENG-2: 412.5 C TANK-1: 78.3 %
len(sensors) == len(readings) == len(units) sprawdza wszystkie trzy naraz.
Podpowiedzi
Pętla for z enumerate i range
# enumerate() - indeks + element
missions = ["Apollo 11", "Apollo 12", "Apollo 13"]
for number, mission in enumerate(missions, start=1):
print(f"{number}. {mission}")
# range() - generowanie sekwencji liczb
print("\nKwadraty liczb:")
for n in range(1, 6):
print(f"{n}^2 = {n**2}")
# range z krokiem
print("\nLata misji (co 5 lat):")
for year in range(2020, 2041, 5):
print(year)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].