3113 - Count Words
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
<syntaxhighlight lang="python" line="">
- 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.")
</syntaxhighlight>