Sprawdzanie poprawności daty

Zadanie 6 z 9 · rozdział 3Trudność: 2 z 3walidacjaprzestępnyif

Treść zadania

Wczytaj d, m, y i sprawdź, czy jest to poprawna data w kalendarzu gregoriańskim.

Data jest poprawna, gdy:

  1. miesiąc m jest w zakresie 1–12,
  2. dzień d jest w zakresie od 1 do liczby dni w miesiącu m:
    • 31 dni: miesiące 1, 3, 5, 7, 8, 10, 12,
    • 30 dni: miesiące 4, 6, 9, 11,
    • luty (2): 29 dni w roku przestępnym, 28 w nieprzestępnym (zob. konwencje rozdziału).

Wypisz:

  • Data jest poprawna.
  • Data jest niepoprawna.

Dane wejściowe

3 liczby całkowite, każda w osobnej linii:

  1. d — dzień
  2. m — miesiąc
  3. y — rok

Dane wyjściowe

Jedna linia — komunikat.

Ograniczenia

  • $-100 \le d, m \le 100$ (dzień i miesiąc mogą być spoza poprawnego zakresu, także zerowe lub ujemne)
  • $1 \le y \le 9999$ (rok zawsze jest poprawny)

Przykłady

Wejście
31
4
2021
Wyjście
Data jest niepoprawna.

Kwiecień ma tylko 30 dni.

Wejście
29
2
2024
Wyjście
Data jest poprawna.

Rok 2024 jest przestępny, więc luty ma 29 dni.

Potrzebujesz teorii?

Zasady obowiązujące w rozdziale 3

Zadania w tym rozdziale dotyczą walidacji i obliczeń na datach w kalendarzu gregoriańskim.

Konwencje wspólne:

  • Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
  • Liczby wczytuj z osobnych linii, w kolejności z opisu. Data jest zawsze podawana jako trzy liczby: dzień, miesiąc, rok.
  • Komunikaty wypisuj dokładnie jak w treści (kropki, polskie znaki, wielkość liter, spacje).
  • Jeśli zadanie mówi „nie wypisuj nic” — program kończy się bez żadnego wyjścia.
  • Program nie wypisuje komunikatów typu „Podaj liczbę:”. Tekst podany w input("…") jest ignorowany przez sprawdzarkę.
  • We wszystkich zadaniach obowiązuje kalendarz gregoriański (także dla lat sprzed 1582 roku). Rok jest przestępny, gdy jest podzielny przez 4 i nie jest podzielny przez 100, albo gdy jest podzielny przez 400 (np. 2024 i 2000 są przestępne, a 2023 i 1900 — nie). Luty ma w roku przestępnym 29 dni, a w nieprzestępnym 28.

Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.

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 uruchomiono
Wejście
29
2
2020
Oczekiwane wyjście
Data jest poprawna.

Test 2

Nie uruchomiono
Wejście
29
2
2019
Oczekiwane wyjście
Data jest niepoprawna.

Test 3

Nie uruchomiono
Wejście
29
2
1900
Oczekiwane wyjście
Data jest niepoprawna.

Test 4

Nie uruchomiono
Wejście
29
2
2000
Oczekiwane wyjście
Data jest poprawna.

Test 5

Nie uruchomiono
Wejście
31
12
2021
Oczekiwane wyjście
Data jest poprawna.

Test 6

Nie uruchomiono
Wejście
0
5
2021
Oczekiwane wyjście
Data jest niepoprawna.

Test 7

Nie uruchomiono
Wejście
15
13
2021
Oczekiwane wyjście
Data jest niepoprawna.

Test 8

Nie uruchomiono
Wejście
31
6
2023
Oczekiwane wyjście
Data jest niepoprawna.

Test 9

Nie uruchomiono
Wejście
30
6
2023
Oczekiwane wyjście
Data jest poprawna.

Test 10

Nie uruchomiono
Wejście
1
0
2020
Oczekiwane wyjście
Data jest niepoprawna.

Test 11

Nie uruchomiono
Wejście
32
1
2020
Oczekiwane wyjście
Data jest niepoprawna.

Test 12

Nie uruchomiono
Wejście
-1
3
2020
Oczekiwane wyjście
Data jest niepoprawna.

Test 13

Nie uruchomiono
Wejście
28
2
1900
Oczekiwane wyjście
Data jest poprawna.

Test 14

Nie uruchomiono
Wejście
30
2
2000
Oczekiwane wyjście
Data jest niepoprawna.
Uruchom z własnymi danymi