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="1">
- 3113 - Count Words
import string
def calculeaza_frecventa_cuvinte(s):
s = s.translate(str.maketrans(, , string.punctuation)) # eliminăm semnele de punctuație din șirul de caractere cuvinte = s.split() # separăm șirul în cuvinte frecventa_cuvinte = {} # dicționar pentru a stoca frecvența cuvintelor
# calculăm frecvența cuvintelor for cuvant in cuvinte: if cuvant in frecventa_cuvinte: frecventa_cuvinte[cuvant] += 1 else: frecventa_cuvinte[cuvant] = 1
cuvinte_sortate = sorted(frecventa_cuvinte.keys()) # sortăm cuvintele în ordine alfabetică
# afișăm cuvintele și frecvența lor for cuvant in cuvinte_sortate: print(cuvant, frecventa_cuvinte[cuvant])
if __name__ == '__main__':
s = input('Introduceți șirul: ') if len(s) <= 10000 and not any(c.isdigit() for c in s): # verificarea restricțiilor print("Datele de intrare corespund restricțiilor impuse.") calculeaza_frecventa_cuvinte(s) # calculăm și afișăm frecvența cuvintelor else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>