Funkcja sprawdzona testami (assert)
Treść zadania
Napisz funkcję czy_przestepny(rok), która zwraca True, jeśli rok jest przestępny, a False w przeciwnym razie.
Rok jest przestępny, jeśli jest podzielny przez 4, ale nie przez 100 — albo jeśli jest podzielny przez 400.
Kod startowy zawiera pięć testów funkcji zapisanych instrukcją assert. Są wykonywane, zanim program zacznie wczytywać dane. Następnie program wczytuje n lat i dla każdego wypisuje Tak (rok przestępny) albo Nie.
Dane wejściowe
- 1. linia: liczba lat
n - kolejne
nlinii: lata — po jednej liczbie naturalnej w linii
Dane wyjściowe
n linii — dla każdego roku Tak albo Nie.
Ograniczenia
- $n \ge 1$
- $1 \le \text{rok} \le 10000$
Uwagi
assert waruneknie robi nic, jeśli warunek jest prawdziwy. Jeśli jest fałszywy, program natychmiast się zatrzymuje z błędemAssertionError. Dzięki temu od razu widać, że funkcja działa źle.- Gdy test się nie powiedzie, zobaczysz komunikat w rodzaju:
`
Traceback (most recent call last):
File "main.py", line 9, in <module>
assert czy_przestepny(1900) == False
AssertionError`
Czytaj go od dołu:AssertionErrormówi, że nie powiódł się test, a linia nad nim (i jej numer, zależny od Twojego kodu) pokazuje, który — tutaj funkcja zwróciła złą odpowiedź dla roku 1900. Popraw funkcję i uruchom program ponownie. - Do testu możesz dopisać komunikat, który pojawi się przy błędzie:
assert czy_przestepny(1900) == False, "1900 nie jest przestępny". - Nie usuwaj testów — możesz za to dopisać własne.
Przykład
3 2024 1900 2000
Tak Nie Tak
Rok 1900 jest podzielny przez 100, ale nie przez 400, więc nie jest przestępny.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 6
Zadania w tym rozdziale uczą pisania funkcji: definiowania ich instrukcją def, przekazywania argumentów i zwracania wyniku instrukcją return.
Konwencje wspólne:
- Każde zadanie (i każdy podpunkt a, b, c…) to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Treść mówi, jaką funkcję napisać (nazwa, parametry, zwracana wartość). Program wczytuje dane, wywołuje funkcję i wypisuje zwrócony przez nią wynik.
- „Funkcja zwraca” oznacza użycie instrukcji
return. Funkcja nie wczytuje danych i nie wypisuje wyniku sama — robi to reszta programu (chyba że treść zadania mówi inaczej). - Sekcja „Kod startowy” zawiera gotowy szkielet: nagłówek funkcji oraz linie, które wczytują dane i wypisują wynik. Wystarczy uzupełnić ciało funkcji.
- Liczby na wejściu podane są w osobnych liniach — wczytuj je dokładnie w podanej kolejności.
- Program nie wypisuje komunikatów typu „Podaj liczbę:”.
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 uruchomiono1 2023
Nie
Test 2
Nie uruchomiono1 2400
Tak
Test 3
Nie uruchomiono4 1996 2100 1600 2001
Tak Nie Tak Nie
Test 4
Nie uruchomiono2 4 100
Tak Nie
Test 5
Nie uruchomiono5 2020 2021 2022 2023 2024
Tak Nie Nie Nie Tak