Informatică, întrebare adresată de alex032206, 8 ani în urmă

a) Scrieți o funcție care primește ca parametru un număr variabil de nume de fișiere și
returnează un dicționar cu cuvintele care apar în cel puțin unul dintre fișiere și frecvența
totală cu care apare fiecare cuvânt (suma frecvențelor cu care apar în fișiere). Cuvintele pot
fi pe mai multe linii și pe o linie sunt separate prin spații.
b) Se consideră fișierele cuvinte1.in si cuvinte2.in. Să se afișeze cuvintele care apar în cel
puțin unul dintre fișiere ordonate crescător lexicografic.
c) Se consideră fișierul cuvinte1.in. Să se creeze o listă de perechi (cuvinte, frecvențe) cu
cuvintele care apar în fișier și frecvența cu care apar, ordonată descrescător după frecvență
(folosind funcția de la a)).
d) Să se determine un cuvânt care apare cel mai des în cuvinte2.in, folosind funcția de la a)
și funcția max. Dacă sunt mai multe posibilități, se va afișa cuvântul cel mai mic din punct
de vedere lexicografic.

Ati putea sa imi aratati cum sa scriu in limbaj Python?

Răspunsuri la întrebare

Răspuns de VxF
0

Răspuns:

### a) ###

def frecventa_cuvinte(*fisier):

   harta_cuvinte = dict()

   for un_fisier in fisier:

       with open(un_fisier) as fisier_in:

           text = fisier_in.read()

       for cuvant in text.split():

           if cuvant in harta_cuvinte:

               harta_cuvinte[cuvant] += 1

           else:

               harta_cuvinte[cuvant] = 1

   return harta_cuvinte

### b) ###

print(sorted(frecventa_cuvinte('cuvinte1.in', 'cuvinte2.in')))

### c) ###

print(sorted(frecventa_cuvinte('cuvinte1.in').items(), key = lambda pereche: pereche[1], reverse = True))

### d) ###

lista = frecventa_cuvinte('cuvinte2.in')

max_frecventa = max(lista.values())

print(min(filter(lambda pereche: pereche[1] == max_frecventa, lista.items()))[0])

Explicație:

La d) n-am găsit soluţie care să folosească max() și să fie compactă ca celelalte.

Alte întrebări interesante