3113 - Count Words: Difference between revisions
Adina Timiș (talk | contribs) 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... |
Adina Timiș (talk | contribs) No edit summary |
||
Line 29: | Line 29: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
#3113 - Count Words | #3113 - Count Words | ||
import string | import string | ||
def calculeaza_frecventa_cuvinte(s): | def calculeaza_frecventa_cuvinte(s): | ||
s = s.translate(str.maketrans('', '', string.punctuation)) | s = s.translate(str.maketrans('', '', string.punctuation)) # eliminăm semnele de punctuație din șirul de caractere | ||
cuvinte = s.split() | cuvinte = s.split() # separăm șirul în cuvinte | ||
frecventa_cuvinte = {} | frecventa_cuvinte = {} # dicționar pentru a stoca frecvența cuvintelor | ||
# calculăm frecvența cuvintelor | |||
for cuvant in cuvinte: | for cuvant in cuvinte: | ||
if cuvant in frecventa_cuvinte: | if cuvant in frecventa_cuvinte: | ||
Line 43: | Line 45: | ||
frecventa_cuvinte[cuvant] = 1 | frecventa_cuvinte[cuvant] = 1 | ||
cuvinte_sortate = sorted(frecventa_cuvinte.keys()) | cuvinte_sortate = sorted(frecventa_cuvinte.keys()) # sortăm cuvintele în ordine alfabetică | ||
# afișăm cuvintele și frecvența lor | |||
for cuvant in cuvinte_sortate: | for cuvant in cuvinte_sortate: | ||
print(cuvant, frecventa_cuvinte[cuvant]) | print(cuvant, frecventa_cuvinte[cuvant]) | ||
Line 50: | Line 53: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
s = input('Introduceți șirul | s = input('Introduceți șirul: ') | ||
if len(s) <= 10000 and not any(c.isdigit() for c in s): | if len(s) <= 10000 and not any(c.isdigit() for c in s): # verificarea restricțiilor | ||
print("Datele de intrare corespund restricțiilor impuse.") | print("Datele de intrare corespund restricțiilor impuse.") | ||
calculeaza_frecventa_cuvinte(s) | calculeaza_frecventa_cuvinte(s) # calculăm și afișăm frecvența cuvintelor | ||
else: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 11:17, 21 May 2023
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>