0454 - Calendar

From Bitnami MediaWiki

Cerință

Se citesc 3 numere naturale zi luna an. Să se decidă dacă reprezintă o dată calendaristică corectă, în format zi luna an.

Date de intrare

Programul citește de la tastatură numerele z l a.

Date de ieșire

Programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar.

Restricții de precizări

  • 1850 ⩽ a ⩽ 2500
  • 0 ⩽ z, l ⩽ 100

Exemplul 1

Intrare
29
2
2000
Ieșire
Datele introduse corespund restricțiilor impuse.
DA

Exemplul 2

Intrare
29
2
2024
Ieșire
Datele introduse corespund restricțiilor impuse.
DA

Rezolvare

<syntaxhighlight lang="python" line="1" start="1"> def este_data_corecta(z, l, a):

   if l < 1 or l > 12:
       return False
   elif z < 1 or z > zile_in_luna(l, a):
       return False
   else:
       return True

def zile_in_luna(l, a):

   if l == 2:
       if a % 4 == 0 and (a % 100 != 0 or a % 400 == 0):
           return 29
       else:
           return 28
   elif l in [4, 6, 9, 11]:
       return 30
   else:
       return 31

</syntaxhighlight>