0093 - Numar Maxim Cuvinte
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>
- 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")
- 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>