Walidacja danych wejściowych
Treść zadania
Program prosi o liczbę całkowitą z przedziału $[1, 100]$ i nie poddaje się, dopóki jej nie dostanie.
Wczytuj kolejne linie. Dla każdej linii:
- jeśli nie jest liczbą całkowitą — wypisz
To nie jest liczba całkowita.i wczytaj następną linię, - jeśli jest liczbą całkowitą spoza przedziału $[1, 100]$ — wypisz
Liczba spoza zakresu.i wczytaj następną linię, - jeśli jest liczbą całkowitą z przedziału $[1, 100]$ — zakończ wczytywanie i wypisz
Przyjęto: X, gdzieXto ta liczba.
Linia jest liczbą całkowitą, jeśli funkcja int() potrafi ją zamienić na liczbę (np. 42, -7). Napisy takie jak abc, 3.5 czy pusta linia nie są liczbami całkowitymi.
Dane wejściowe
Kolejne linie tekstu.
Dane wyjściowe
Jeden komunikat o błędzie dla każdej niepoprawnej linii (w kolejności wczytywania), a na końcu linia Przyjęto: X.
Ograniczenia
- Wśród danych na pewno jest co najmniej jedna poprawna liczba.
- Po pierwszej poprawnej liczbie mogą występować kolejne linie — program ma je pominąć.
Uwagi
- Wywołanie
int("abc")kończy się błędemValueError. Taki błąd można „złapać” konstrukcjątry/except: Python wykonuje instrukcje z blokutry, a jeśli w którejś z nich wystąpiValueError, zamiast przerywać program przechodzi do blokuexcept ValueError:.
```python
try:
liczba = int("abc")
print("To się nie wykona.")
except ValueError:
print("Nie udało się zamienić napisu na liczbę.")` continueprzerywa bieżący obrót pętli i od razu przechodzi do następnego, abreakkończy całą pętlę.- Pętla
while True:kręci się „w nieskończoność” — kończy ją dopierobreak. - Granice przedziału należą do niego:
1i100są poprawne.
Przykład
abc 150 3.5 42
To nie jest liczba całkowita. Liczba spoza zakresu. To nie jest liczba całkowita. Przyjęto: 42
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 4
Zadania w tym rozdziale ćwiczą powtarzanie instrukcji za pomocą pętli while i for: wczytywanie danych aż do spełnienia warunku, wypisywanie ciągów liczb, sumowanie i proste obliczenia.
Konwencje wspólne:
- Każde zadanie (i każdy podpunkt) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Program nie wypisuje komunikatów typu „Podaj liczbę:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę. - Dane wejściowe wczytuj dokładnie w podanej kolejności, każdą wartość z osobnej linii (o ile nie napisano inaczej).
- Jeśli wynik ma być „każdy w osobnej linii”, po każdej wartości wypisz znak nowej linii.
- Jeśli zadanie mówi, że w danym przypadku nic nie trzeba wypisywać, program nie wypisuje nic (nawet pustej linii).
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono7
Przyjęto: 7
Test 2
Nie uruchomiono0 101 100
Liczba spoza zakresu. Liczba spoza zakresu. Przyjęto: 100
Test 3
Nie uruchomiono-5 1 50
Liczba spoza zakresu. Przyjęto: 1
Test 4
Nie uruchomionodziesięć 2.0 10
To nie jest liczba całkowita. To nie jest liczba całkowita. To nie jest liczba całkowita. Przyjęto: 10
Test 5
Nie uruchomiono1000 x -1 99 abc
Liczba spoza zakresu. To nie jest liczba całkowita. Liczba spoza zakresu. Przyjęto: 99