0101 - Sortare Cuvinte
Cerinţa[edit | edit source]
Să se scrie un program care citește o propoziţie şi afişează cuvintele din propoziţie ordonate alfabetic.
Date de intrare[edit | edit source]
Fișierul de intrare sortcuvin.txt conține pe prima linie 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 sortcuvout va conține cuvintele din propoziție, ordonate alfabetic, fiecare pe câte o linie.
Restricții și precizări[edit | edit source]
- propoziția va conține cel mult 250 de caractere;
- fiecare cuvânt din propoziție are cel mult 20 litere
Exemplul 1[edit | edit source]
- sortcuvin.txt
dreptunghiul este un paralelogram cu un unghi drept
- sortcuvout.txt
Datele de intrare corespund restrictiilor impuse. cu drept dreptunghiul este paralelogram un un unghi
Exemplul 2[edit | edit source]
- sortcuvin.txt
acestcuvantaremaimulteliteredecatestepermis
- sortcuvout.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(propozitie_validare):
# verificam daca lungimea propozitiei este in intervalul 0-250 if len(propozitie_validare) <= 0 or len(propozitie_validare) > 250: raise ValueError # ridicam o eroare daca lungimea propozitiei nu este in intervalul 0-250 for cuvant_validare in propozitie_validare.split(): # parcurgem lista de cuvinte # verificam daca lungimea cuvantului este mai mica sau egala cu 20 if len(cuvant_validare) > 20: raise ValueError # verificam daca cuvantul contine doar litere mici ale alfabetului englezesc if not cuvant_validare.islower(): raise ValueError # verificam daca cuvantul contine numere if any(char.isdigit() for char in cuvant_validare): raise ValueError file_out.write("Datele de intrare corespund restrictiilor impuse.\n")
- functia sort_words sorteaza cuvintele in functie de ordinea alfabetica
def sort_words(cuvinte):
# sortam cuvintele in functie de ordinea alfabetica cuvinte.sort() return cuvinte
if __name__ == '__main__':
file_in = open("sortcuvin.txt", "r") file_out = open("sortcuvout.txt", "w")
try: # citim propozitia propozitie_main = file_in.readline().strip() # validam datele de intrare validare(propozitie_main) # sortam cuvintele in functie de ordinea alfabetica cuvinte_sortate = sort_words(propozitie_main.split()) # scriem cuvintele sortate in fisierul de iesire for cuvant in cuvinte_sortate: file_out.write(cuvant + '\n')
# daca datele de intrare nu sunt valide, afisam un mesaj de eroare except ValueError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.") # daca datele de intrare sunt incomplete, afisam un mesaj de eroare except IndexError: file_out.write("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>