3113 - Count Words
Cerința[edit | edit source]
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[edit | edit source]
Programul citește de la tastatură un șir de caractere.
Date de ieșire[edit | edit source]
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[edit | edit source]
- 1 ≤ strlen(sir) ≤ 10000;
Exemplul 1[edit | edit source]
- 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[edit | edit source]
- Intrare
- 1234
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<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>