0454 - Calendar

De la Universitas 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

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

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

Rezolvare ver. 1

def validare_date(zi, luna, an):
    return an.isdigit() and 1850 <= int(an) <= 2500 and luna.isdigit() and 0 <= int(luna) <= 100 and zi.isdigit() and 0 <= int(zi) <= 100


def verifica_data(): #verificăm daca o anumtă dată este validă
    if (luna in [1, 3, 5, 7, 8, 10, 12]) and (zi <= 31): #ca data să fie validă lunile respective trebuie să aibă 31 de zile
        print("DA") 
    elif (luna in [4, 6, 9, 11]) and (zi <= 30): #ca dată să fie validă, lunile respective trebuie sa aibă doar 30 de zile
        print("DA")
    elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and ((an % 100 != 0) or (an % 400 == 0)): #dacă luna este februarie și anuel este bisect 
        print("DA")
    elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and (an % 400 != 0):
        print("NU") #dacă luna și ziua nu corespund condiților, atunci data este invalidă
    else:
        print("NU")


if __name__ == '__main__':
    zi = input()
    luna = input()
    an = input()

    if validare_date(zi, luna, an):
        zi, luna, an = int(zi), int(luna), int(an)
        print("Datele de intrare corespund restricțiilor impuse.")
        verifica_data()
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")