0157 - Doar Vocale: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerința == 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 == 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 == 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...
 
No edit summary
Tag: visualeditor
 
(One intermediate revision by the same user not shown)
Line 32: Line 32:
<br>
<br>
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<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>

Latest revision as of 13:24, 4 May 2023

Cerința[edit]

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]

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]

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]

  • 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]

doarvocalein.txt
5
creion
lemn
ou
ea
voce
doarvocaleout.txt
Datele introduse corespund restricțiilor impuse.
2


Explicație[edit]

Sunt 2 cuvinte formate doar din vocale: ou, ea.

Exemplu 2[edit]

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]

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

  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>