0157 - Doar Vocale: Difference between revisions
No edit summary |
|||
Line 32: | Line 32: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 0157 Doar Vocale | # 0157 Doar Vocale | ||
def validare(nr_cuv, cuvinte): | def validare(nr_cuv, cuvinte): # functia de validare a datelor de intrare | ||
if nr_cuv <= 0 or nr_cuv >= 1000: | if nr_cuv <= 0 or nr_cuv >= 1000: | ||
Line 41: | Line 41: | ||
if len(cuvinte) != nr_cuv: | if len(cuvinte) != nr_cuv: | ||
raise ValueError | raise ValueError | ||
# daca datele de intrare nu corespund, ridicam eroarea ValueError | |||
for cuv in cuvinte: | for cuv in cuvinte: | ||
Line 46: | Line 48: | ||
raise ValueError | raise ValueError | ||
for litera in cuv: | for litera in cuv: | ||
if litera < 'a' or litera > 'z': | if litera < 'a' or litera > 'z': # trebuie sa fie doar litera mica | ||
raise ValueError | raise ValueError | ||
Line 52: | Line 54: | ||
def vocala(litera): | def vocala(litera): # functie care verifica daca litera este o vocala | ||
if litera in "aeiou": | if litera in "aeiou": | ||
return True | return True | ||
Line 60: | Line 62: | ||
def doar_vocale(cuvinte): | def doar_vocale(cuvinte): | ||
nr_cuvinte_doar_vocale = 0 | nr_cuvinte_doar_vocale = 0 # variabila in care numaram cate cuvinte contin doar vocale | ||
for cuv in cuvinte: | for cuv in cuvinte: | ||
are_consoane = False | are_consoane = False # presupunem ca fiecare cuvant nu are consoane | ||
for litera in cuv: | for litera in cuv: | ||
if vocala(litera) is False: | if vocala(litera) is False: | ||
are_consoane = True | are_consoane = True # daca vreo litera din cuvant nu e vocala atunci are consoane | ||
break | break | ||
if are_consoane is False: | if are_consoane is False: # daca nu are consoane, numaram acel cuvant | ||
nr_cuvinte_doar_vocale += 1 | nr_cuvinte_doar_vocale += 1 | ||
file_out.write(str(nr_cuvinte_doar_vocale)) | file_out.write(str(nr_cuvinte_doar_vocale)) # afisarea | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
file_in = open("doarvocalein.txt", "r") | file_in = open("doarvocalein.txt", "r") # declararea fisierelor | ||
file_out = open("doarvocaleout.txt", "w") | file_out = open("doarvocaleout.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: | ||
nr_cuvinte = int(file_in.readline()) | nr_cuvinte = int(file_in.readline()) # citim numarul de cuvinte | ||
lista_cuvinte = [] | lista_cuvinte = [] # adaugam cuvintele intr-o lista | ||
for i in range(nr_cuvinte): | for i in range(nr_cuvinte): | ||
cuvant = file_in.readline().strip() | cuvant = file_in.readline().strip() | ||
# fiecare cuvant il "curatam" de \n sau spatii de la final ce pot aparea in fisier apoi il adaugam in lista | |||
lista_cuvinte.append(cuvant) | lista_cuvinte.append(cuvant) | ||
validare(nr_cuvinte, lista_cuvinte) | validare(nr_cuvinte, lista_cuvinte) # apelul functiei de validare | ||
doar_vocale(lista_cuvinte) | doar_vocale(lista_cuvinte) # apelul functiei de rezolvare | ||
except ValueError: | except ValueError: | ||
Line 92: | Line 97: | ||
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> |
Latest revision as of 13:24, 4 May 2023
Cerința[edit | edit source]
Se dă un șir de n cuvinte, fiecare format din cel mult 30 caractere. Să se determine numărul cuvintelor care conțin doar vocale.
Date de intrare[edit | edit source]
Fişierul de intrare doarvocalein.txt conţine pe prima linie numărul n, iar pe n următoarele n linii câte un cuvânt.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, fişierul de ieşire doarvocaleout.txt va conține pe prima linie : " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa numărul cuvintelor care conțin doar vocale. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse"
Restricții și precizări[edit | edit source]
- 0 < n ≤ 1000
- cuvintele vor conține doar litere mici ale alfabetului englez
- se consideră vocale caracterele din mulțimea {a,e,i,o,u}
Exemplu 1[edit | edit source]
- doarvocalein.txt
- 5
- creion
- lemn
- ou
- ea
- voce
- doarvocaleout.txt
- Datele introduse corespund restricțiilor impuse.
- 2
Explicație[edit | edit source]
Sunt 2 cuvinte formate doar din vocale: ou, ea.
Exemplu 2[edit | edit source]
- doarvocalein.txt
- 1
- Textul descriptiv literar este un text, în versuri sau în proză, în care se prezintă sugestiv un colț/aspect din natură, un obiect sau o persoană, prin intermediul figurilor de stil și a imaginilor artistice.
- doarvocaleout.txt
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0157 Doar Vocale
def validare(nr_cuv, cuvinte): # functia de validare a datelor de intrare
if nr_cuv <= 0 or nr_cuv >= 1000: raise ValueError
if len(cuvinte) != nr_cuv: raise ValueError
# daca datele de intrare nu corespund, ridicam eroarea ValueError
for cuv in cuvinte: if len(cuv) > 30: raise ValueError for litera in cuv: if litera < 'a' or litera > 'z': # trebuie sa fie doar litera mica raise ValueError
file_out.write("Datele de intrare corespund restrictiilor impuse\n")
def vocala(litera): # functie care verifica daca litera este o vocala
if litera in "aeiou": return True
return False
def doar_vocale(cuvinte):
nr_cuvinte_doar_vocale = 0 # variabila in care numaram cate cuvinte contin doar vocale
for cuv in cuvinte: are_consoane = False # presupunem ca fiecare cuvant nu are consoane for litera in cuv: if vocala(litera) is False: are_consoane = True # daca vreo litera din cuvant nu e vocala atunci are consoane break if are_consoane is False: # daca nu are consoane, numaram acel cuvant nr_cuvinte_doar_vocale += 1
file_out.write(str(nr_cuvinte_doar_vocale)) # afisarea
if __name__ == '__main__':
file_in = open("doarvocalein.txt", "r") # declararea fisierelor file_out = open("doarvocaleout.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: nr_cuvinte = int(file_in.readline()) # citim numarul de cuvinte lista_cuvinte = [] # adaugam cuvintele intr-o lista
for i in range(nr_cuvinte): cuvant = file_in.readline().strip() # fiecare cuvant il "curatam" de \n sau spatii de la final ce pot aparea in fisier apoi il adaugam in lista lista_cuvinte.append(cuvant)
validare(nr_cuvinte, lista_cuvinte) # apelul functiei de validare doar_vocale(lista_cuvinte) # 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>