Łap to, czego się spodziewasz
Monitor paliwa zgłasza każdy odczyt jako zły, nawet te, które wyglądają zupełnie dobrze. Czujniki sprawdzono dwa razy i działają. Kod ma try i except, więc nie może się wysypać, ale błąd ukrywa się gdzieś w środku.
Przewidź, co wypisze program, sprawdź, co łapie except, i spraw, żeby łapał tylko to, co powinien.
Ukończ etap 1, aby odblokować ten etap.
Nie uruchamiaj jeszcze kodu. Przeczytaj go i zdecyduj, co wypisze w ostatniej linii. 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.
Trzy z czterech odczytów wyglądają jak liczby. Ile z nich trafi do good?
Ukończ etap 1, aby odblokować ten etap.
Zbadaj. Zmień except: na except Exception as error: i wypisz w nim type(error).__name__, żeby zobaczyć, co naprawdę jest łapane. Zapisz jego nazwę w hidden_error, a liczbę naprawdę złych odczytów w bad_count.
Zmień. Łap tylko ValueError. Ukryty błąd zatrzyma wtedy program tracebackiem: napraw go. Ma wypisać:
Zły odczyt: n/a Dobre odczyty: 3
Ukończ etap 2, aby odblokować ten etap.
Napisz parse_pressure(text), która zwraca liczbę albo None, gdy tekst nie jest liczbą. Łap tylko ValueError, żeby błąd taki jak parse_pressure(None) nadal zgłaszał swój TypeError. Pętla wypisze:
101.2 None 100.8
Podpowiedzi
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].