3113 - Count Words: Diferență între versiuni
De la Universitas MediaWiki
(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...) |
Fără descriere a modificării |
||
Linia 29: | Linia 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: | ||
Linia 43: | Linia 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]) | ||
Linia 50: | Linia 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> |
Versiunea curentă din 21 mai 2023 11:17
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
#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.")