3053 - Even Odd XXL

From Bitnami MediaWiki

Cerința

Se dă un număr natural n. Să se determine paritatea lui. Dacă numărul este par se afișează Par, altfel se afișează Impar.

Date de intrare

Fișierul de intrare evenoddxxlin.txt conține pe prima linie numărul n.

Date de ieșire

Dacă datele sunt introduse corect, fișierul de ieșire evenoddxxlout.txt va conține pe prima linie: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa Par sau Impar, după caz. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"

Restricții și precizări

  • n are cel mult 1000 de cifre

Exemplu 1

evenoddxxlin.txt
5
evenoddxxlout.txt
Datele introduse corespund restricțiilor impuse.
Impar


Exemplu 2

evenoddxxlin.txt
1n678889
evenoddxxlout.txt
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

<syntaxhighlight lang="python" line="1">

  1. 3053 Even Odd XXL

def validare(nr): # functia de validare a datelor de intrare

   if len(nr) > 1000:
       raise ValueError
   # daca datele de intrare nu corespund, ridicam eroarea ValueError
   for cifra in nr:
       if cifra.isdigit() is False:    # fiecare caracter trebuie sa fie cifra
           raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse\n")


def evenoddxxl(nr): # functia de rezolvare

   if int(nr[len(nr)-1]) % 2 == 0:     # testam daca ultimul caracter e o cifra para sau nu si afisam conform cerintei
       file_out.write("Par")
   else:
       file_out.write("Impar")


if __name__ == '__main__':

   file_in = open("evenoddxxlin.txt", "r")         # declararea fisierelor
   file_out = open("evenoddxxlout.txt", "w")       # fisierul out trebuie declarat cu optiunea "w" (write)
   # din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam
   try:
       numar = file_in.readline()      # citirea numarului se face ca sir de caractere deoarece e prea mare
       validare(numar)                 # apelul functiei de validare
       evenoddxxl(numar)               # apelul functiei de rezolvare
   except ValueError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")
   except IndexError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse")
       

</syntaxhighlight>