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 zi luna an.

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 ⩽ an ⩽ 2500
  • 0 ⩽ zi, luna ⩽ 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>