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

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

  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>