0847 - Cuvinte

De la Universitas MediaWiki

Cerinţa

Se dă un șir de caractere format din cuvinte, separate prin spații. Cuvintele conțin doar litere mici ale alfabetului englez. Afișați, în ordine lexicografică, cuvintele din șir și frecvența lor de apariție.

Date de intrare

Programul citește de la tastatură șirul dat.

Date de ieșire

Programul va afișa pe ecran câte un cuvânt pe o linie, apoi un spațiu, apoi numărul de apariții ale cuvântului.

Restricţii şi precizări

  • șirul dat va avea cel mult 255 de caractere și va conține cel mult 100 de cuvinte
  • lungimea unui cuvânt este de cel mult 15 caractere


Exemplul 1

Intrare
maria are doua pere si ana are doua mere 
Iesire
Datele de intrare corespund restrictiilor impuse
ana 1
are 2
doua 2
maria 1
mere 1
pere 1
si 1

Exemplu 2

Intrare
abcdefghijklmnop
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

def main():
    sir = input("Introduceti sirul de caractere: ")

    if len(sir) > 255:
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    cuvinte = sir.split()

    if len(cuvinte) > 100:
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    for cuvant in cuvinte:
        if len(cuvant) > 15:
            print("Datele de intrare nu corespund restrictiilor impuse")
            return

    print("Datele de intrare corespund restrictiilor impuse")

    frecventa_cuvinte = {}

    for cuvant in cuvinte:
        if cuvant in frecventa_cuvinte:
            frecventa_cuvinte[cuvant] += 1
        else:
            frecventa_cuvinte[cuvant] = 1

    for cuvant in sorted(frecventa_cuvinte.keys()):
        print(cuvant, frecventa_cuvinte[cuvant])


if __name__ == "__main__":
    main()