0990 - Sortare Cuvinte 1

De la Universitas MediaWiki

Cerinţa

Să se scrie un program care citește o listă de cuvinte şi le afişează în ordine alfabetică.

Date de intrare

Fișierul de intrare sortarecuvinte1in.txt conține mai multe cuvinte, câte unul pe o linie.

Date de ieşire

Fișierul de ieșire sortarecuvinte1out.txt va conține cuvintele date, ordonate alfabetic, fiecare pe câte o linie.

Restricții și precizări

  • în listă sunt cel mult 200 de cuvinte, fiecare având cel mult 30 litere

Exemplul 1

sortarecuvinte1in.txt
Dana
Are
Bomboane
sortarecuvinte1out.txt
Datele de intrare corespund restrictiilor impuse.
Are
Bomboane
Dana


Exemplul 2

sortarecuvinte1in.txt
acestcuvantarepreamultelitereincuvant
sortarecuvinte1out.txt
Datele de intrare nu corespund restrictiilor impuse.


Rezolvare

# functia de validare verifica daca datele de intrare sunt in intervalul specificat
def validare(cuvinte_validare):
    # verificam daca numarul de cuvinte este in intervalul 0-200
    if len(cuvinte_validare) <= 0 or len(cuvinte_validare) > 200:
        raise ValueError  # ridicam o eroare daca numarul de cuvinte nu este in intervalul 0-200
    for cuvant_validare in cuvinte_validare:    # parcurgem lista de cuvinte
        # verificam daca lungimea cuvantului este mai mica sau egala cu 30
        if len(cuvant_validare) > 30:
            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("sortarecuvinte1in.txt", "r")
    file_out = open("sortarecuvinte1out.txt", "w")

    try:
        # citim cuvintele
        cuvinte_main = [linie.strip() for linie in file_in]
        # validam datele de intrare
        validare(cuvinte_main)
        # sortam cuvintele in functie de ordinea alfabetica
        cuvinte_sortate = sort_words(cuvinte_main)
        # 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.")