Sagot :
Bonjour
Ton code initial
Ci-joint, en premier, j'ai remis le code que tu avais fait à l'origine, en t'inspirant de la fonction occurrences(t) j'imagine.
Ce code était correct, il marchait et pourrait être fonctionnel, seulement on arrivait face à une impasse ou du moins un mur un peu haut à franchir.
Il aurait fallu chercher quelle clef du dictionnaire était liée à la valeur la plus élevée dans ce dictionnaire, seulement cela nécessite soit l'installation de paquets de modules complémentaires OU de créer des fonctions intermédiaires assez complexes qui permettraient de transformer les couples clef:valeur du tableau en liste du genre [[clef,valeur],[clef,valeur]], bref un casse tête chronophage et évitable.
De plus, il y a 3 erreurs dans ton code,
1. La fréquence n'est pas simplement le nombre d'occurrence d'un mot, la fréquence c'est un rapport mathématique qui s'obtient en divisant le nombre d'occurrences du mot par le nombre total de mots.
2. À la fin d'une fonction, on n'utilise pas/peu print mais bien return, permettant donc de manipuler les données finales en dehors de la fonction. C'est un peu une règle générale en Python.
3. Ta boucle for n'a aucun sens, tu dit "in tableau" sauf que tableau n'existe pas au sein de cette fonction.
Si tableau est entré comme premier argument, alors il faut utiliser d pour désigner ce tableau, donc :
▌ for word in d :
Nous n'avons pas le fichier "ltdme80j.txt" donc je ne vais pas en prendre compte et partir du principe que tu as déjà établi une fonction/procédé pour créer le dictionnaire à partir du texte.
La fonction occurences(t)
Cette fonction permet de compter le nombre d'occurrences de chaque mot dans la liste (créée àpd texte).
Ci-joint la fonction recopié correctement avec coloration et tabulation
On commence par définir un dictionnaire vide
▌d = {}
On initie une boucle for qui va prendre chaque élément (x) de la liste (t)
▌ for x in t :
Vérification si le mot traité (x) est déjà dans le dictionnaire (d)
▌ if x in d :
Alors on ajoute 1 à la valeur attaché à la clef "x" dans le dictionnaire
▌ d [x] =+ 1
Sinon
▌ else :
Alors on créé une nouvelle clef dans le dictionnaire et on lui assigne la valeur 1
▌ d [x] = 1
La fonction plus_frequent(d,k)
On y est (enfin !), ce n'est pas un exercice simple, surtout qu'on ne fourni aucune piste en soit.
En informatique, plus l'exercice est complexe et plus il y a des cheminements possibles pour arriver à nos fins.
Ce que je te propose ici marche mais n'est pas universel, il y a sûrement moyen de le faire plus long, plus court, etc...
En lisant l'énoncé je me suis aussi rendu compte que tu l'avais peut-être mal lu, quand on initie la fonction plus_frequent(d,k) le d est bien un dictionnaire déjà défini, pas un tableau qu'on doit transformer en dictionnaire.
Comme il serait un peu compliqué d'expliquer toutes les lignes etc en écrit (les réponses sont limitées à 5000 caractères), je te poste le code complet commenté
Et si des questions subsistent tu peux me les poser en commentaires :)