3053 - Even Odd XXL: Difference between revisions
No edit summary Tag: visualeditor |
|||
(One intermediate revision by the same user not shown) | |||
Line 22: | Line 22: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="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> |
Latest revision as of 13:27, 4 May 2023
Cerința[edit]
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[edit]
Fișierul de intrare evenoddxxlin.txt conține pe prima linie numărul n.
Date de ieșire[edit]
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[edit]
- n are cel mult 1000 de cifre
Exemplu 1[edit]
- evenoddxxlin.txt
- 5
- evenoddxxlout.txt
- Datele introduse corespund restricțiilor impuse.
- Impar
Exemplu 2[edit]
- evenoddxxlin.txt
- 1n678889
- evenoddxxlout.txt
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit]
<syntaxhighlight lang="python" line="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>