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[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>