0093 - Numar Maxim Cuvinte

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Să se scrie un program care citește mai multe propoziții și determină propoziția cu cele mai multe cuvinte.

Date de intrare[edit | edit source]

Fișierul de intrare cuvmaxin.txt conține pe prima linie un număr natural n, iar pe următoarele n linii câte o propoziție alcătuită din litere mici ale alfabetului englez și spații.

Date de ieşire[edit | edit source]

Fișierul de ieșire cuvmaxout.txt va conține pe prima linie propoziția cu cele mai multe cuvinte.

Restricții și precizări[edit | edit source]

  • 0<n<100
  • fiecare propoziție va conține cel mult 255 de caractere

Exemplul 1[edit | edit source]

cuvmaxin.txt
4
somnoroase pasarele
pe la cuiburi se aduna
se ascund in ramurele
noapte buna noapte buna
cuvmaxout.txt
Datele de intrare corespund restrictiilor impuse.
pe la cuiburi se aduna


Exemplul 2[edit | edit source]

cuvmaxin.txt
205ALA
cuvmaxout.txt
Datele de intrare nu corespund restrictiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. functia de validare verifica daca datele de intrare sunt in intervalul specificat

def validare(n_validare, propozitii_validare):

   # verificam daca n este in intervalul 0-100
   if n_validare <= 0 or n_validare > 100:
       raise ValueError  # ridicam o eroare daca n nu este in intervalul 0-100
   for propozitie in propozitii_validare:    # parcurgem lista de propozitii
       # verificam daca lungimea propozitiei este mai mica sau egala cu 255
       if len(propozitie) > 255:
           raise ValueError
       for caracter in propozitie:    # parcurgem fiecare caracter din propozitie
           # verificam daca caracterul este o litera mica a alfabetului englezesc sau un spatiu
           if not caracter.islower() and not caracter.isspace():
               raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse.\n")


  1. functia max_words_proposition determina propozitia cu cele mai multe cuvinte

def numar_max_cuvinte(propozitii):

   # determinam propozitia cu cele mai multe cuvinte
   propozitie_max_cuvinte = max(propozitii, key=lambda propozitie: len(propozitie.split()))
   return propozitie_max_cuvinte


if __name__ == '__main__':

   file_in = open("cuvmaxin.txt", "r")
   file_out = open("cuvmaxout.txt", "w")
   try:
       # citim numarul de propozitii
       n_main = int(file_in.readline())
       # citim propozitiile
       propozitii_main = [linie.strip() for linie in file_in]
       # validam datele de intrare
       validare(n_main, propozitii_main)
       # determinam propozitia cu cele mai multe cuvinte
       propozitie_max = numar_max_cuvinte(propozitii_main)
       # scriem propozitia cu cele mai multe cuvinte in fisierul de iesire
       file_out.write(propozitie_max + '\n')
   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>