3113 - Count Words: Difference between revisions

From Bitnami 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...
 
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 de caractere: ')
     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">

  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>