3113 - Count Words

De la Universitas MediaWiki
Versiunea din 24 martie 2023 17:22, autor: Adina Timiș (discuție | contribuții) (Pagină nouă: ==Cerința== Se dă un șir de caractere care conține litere mici și mari ale alfabetului englez, spații și semne de punctuație. Să se afișeze fiecare cuvânt și frecvența de apariție a lui în șirul de caractere pe câte o linie fiecare pereche cuvânt-frecvență ordonate lexicografic. ==Date de intrare== Programul citește de la tastatură un șir de caractere. ==Date de ieșire== Programul va afișa pe ecran pe câte o linie fiecare cuvânt și frecvența lui...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

Cerința

Se dă un șir de caractere care conține litere mici și mari ale alfabetului englez, spații și semne de punctuație. Să se afișeze fiecare cuvânt și frecvența de apariție a lui în șirul de caractere pe câte o linie fiecare pereche cuvânt-frecvență ordonate lexicografic.

Date de intrare

Programul citește de la tastatură un șir de caractere.

Date de ieșire

Programul va afișa pe ecran pe câte o linie fiecare cuvânt și frecvența lui de apariție în șir.

Restricții și precizări

  • 1 ≤ strlen(sir) ≤ 10000;

Exemplul 1

Intrare
Ana are mere si prune si pere, insa Ana nu are masina si casa.
Ieșire
Datele de intrare corespund restricțiilor impuse.
Ana 2
are 2
casa 1
insa 1
masina 1
mere 1
nu 1
pere 1
prune 1
si 3

Exemplul 2

Intrare
1234
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#3113 - Count Words
import string

def calculeaza_frecventa_cuvinte(s):
    s = s.translate(str.maketrans('', '', string.punctuation))
    cuvinte = s.split()
    frecventa_cuvinte = {}
    for cuvant in cuvinte:
        if cuvant in frecventa_cuvinte:
            frecventa_cuvinte[cuvant] += 1
        else:
            frecventa_cuvinte[cuvant] = 1

    cuvinte_sortate = sorted(frecventa_cuvinte.keys())

    for cuvant in cuvinte_sortate:
        print(cuvant, frecventa_cuvinte[cuvant])


if __name__ == '__main__':
    s = input('Introduceți șirul de caractere: ')
    if len(s) <= 10000 and not any(c.isdigit() for c in s):
        print("Datele de intrare corespund restricțiilor impuse.")
        calculeaza_frecventa_cuvinte(s)
    else:
        print("Datele de intrare nu corespund restricțiilor impuse.")