0101 - Sortare Cuvinte
De la Universitas MediaWiki
Cerinţa
Să se scrie un program care citește o propoziţie şi afişează cuvintele din propoziţie ordonate alfabetic.
Date de intrare
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
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
- propoziția va conține cel mult 250 de caractere;
- fiecare cuvânt din propoziție are cel mult 20 litere
Exemplul 1
- 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
- sortcuvin.txt
acestcuvantaremaimulteliteredecatestepermis
- sortcuvout.txt
Datele de intrare nu corespund restrictiilor impuse.
Rezolvare
# 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.")