Przetrwaj złe linie
Parser strumienia z „Pomiń puste linie i komentarze” zamienia teraz każdą wartość na liczbę. Potem czujnik w kabinie się zepsuł i zaczął wysyłać ERR, a pierwsza zła wartość zatrzymała całe przetwarzanie: jeden zepsuty czujnik i zero telemetrii.
Spraw, żeby parser pomijał to, czego nie umie odczytać, zachowywał całą resztę i mówił, ile pominął.
Ukończ etap 1, aby odblokować ten etap.
Program zatrzymuje się na ERR z błędem ValueError. Umieść zamianę w try; gdy się nie uda, dodaj 1 do nowego licznika, skipped, i przejdź do następnej linii. Na końcu wypisz wszystkie trzy liczby:
09:30:05 ENG-2: 412.5 C 09:30:05 TANK-1: 78.3 % Uszkodzona linia: 2026-03-14T09:30:10Z,TANK-1 09:30:10 ENG-2: 415.0 C 09:30:15 CABIN: 101.2 kPa Przetworzone: 4, uszkodzone: 1, pominięte: 2
4l7.9, z literą l, to literówka operatora stacji naziemnej, więc też zostaje pominięta.
Ukończ etap 1, aby odblokować ten etap.
Rozpakowanie linii ze zbyt małą liczbą pól też zgłasza ValueError. Usuń sprawdzenie długości i niech jedno try obejmie zarówno rozpakowanie, jak i zamianę. Dla każdej pominiętej linii wypisz linię i komunikat błędu:
09:30:05 ENG-2: 412.5 C 09:30:05 TANK-1: 78.3 % Pominięta: 2026-03-14T09:30:10Z,TANK-1 (not enough values to unpack (expected 4, got 2)) Pominięta: 2026-03-14T09:30:10Z,CABIN,ERR,kPa (could not convert string to float: 'ERR') 09:30:10 ENG-2: 415.0 C Pominięta: 2026-03-14T09:30:15Z,ENG-2,4l7.9,C (could not convert string to float: '4l7.9') 09:30:15 CABIN: 101.2 kPa Przetworzone: 4, pominięte: 3
Użyj except ValueError as error:; w f-stringu {error} pokazuje komunikat.
Podpowiedzi
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].