3053 - Even Odd XXL: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
Linia 22: Linia 22:


== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line="1">
# 3053 Even Odd XXL
# 3053 Even Odd XXL
def validare(nr):
def validare(nr):           # functia de validare a datelor de intrare


     if len(nr) > 1000:
     if len(nr) > 1000:
         raise ValueError
         raise ValueError
    # daca datele de intrare nu corespund, ridicam eroarea ValueError


     for cifra in nr:
     for cifra in nr:
         if cifra.isdigit() is False:
         if cifra.isdigit() is False:   # fiecare caracter trebuie sa fie cifra
             raise ValueError
             raise ValueError


Linia 36: Linia 38:




def vocala(litera):
def evenoddxxl(nr):                     # functia de rezolvare
    if litera in "aeiou":
     if int(nr[len(nr)-1]) % 2 == 0:     # testam daca ultimul caracter e o cifra para sau nu si afisam conform cerintei
        return True
 
    return False
 
 
def evenoddxxl(nr):
     if int(nr[len(nr)-1]) % 2 == 0:
         file_out.write("Par")
         file_out.write("Par")
     else:
     else:
Linia 51: Linia 46:


if __name__ == '__main__':
if __name__ == '__main__':
     file_in = open("evenoddxxlin.txt", "r")
     file_in = open("evenoddxxlin.txt", "r")         # declararea fisierelor
     file_out = open("evenoddxxlout.txt", "w")
     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:
     try:
         numar = file_in.readline()
         numar = file_in.readline()     # citirea numarului se face ca sir de caractere deoarece e prea mare


         validare(numar)
         validare(numar)                 # apelul functiei de validare
         evenoddxxl(numar)
         evenoddxxl(numar)               # apelul functiei de rezolvare


     except ValueError:
     except ValueError:
Linia 63: Linia 60:
     except IndexError:
     except IndexError:
         file_out.write("Datele de intrare nu corespund restrictiilor impuse")
         file_out.write("Datele de intrare nu corespund restrictiilor impuse")
       
</syntaxhighlight>
</syntaxhighlight>

Versiunea curentă din 4 mai 2023 13:27

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

# 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")