3053 - Even Odd XXL: Diferență între versiuni
De la Universitas MediaWiki
(Pagină nouă: == 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...) |
Fără descriere a modificării |
||
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator) | |||
Linia 16: | Linia 16: | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; evenoddxxlin.txt | ; evenoddxxlin.txt | ||
: | : 1n678889 | ||
; evenoddxxlout.txt | ; evenoddxxlout.txt | ||
: Datele de intrare nu corespund restricțiilor impuse. | : Datele de intrare nu corespund restricțiilor impuse. | ||
<br> | <br> | ||
== 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> |
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")