👤

Bonjour, j'ai une question par rapport à un programme python. J'ai crée un programme et je dois maintenant trouver quelle valeur a le plus grand chiffre mais je ne sais pas comment faire. Merci d'avance !

Voici l'énoncé:
Quel est le mot de 7 lettres qui apparaît le plus souvent dans le texte tour du monde en 80 jours de
Jules Vernes. Pour cela :
1. Comprendre la fonction occurences(t) définie ci-dessous
2. En s’appuyant sur le fichier ltdme80j.txt et des fonctions open, read, split et close, créer un tableau
de mot correspondant au texte de Jules Verne.
3. Ecrire une fonction plus-fréquent(d,k) qui renvoie le mot de k lettres qui est associé dans le dictionnaire
d le plus fréquent. En cas d’égalité, on choisira arbitrairement. S’il n’y a pas de mot de k lettres dans
d, on renverra une chaîne vide.
4. Conclure sur le problème initial.


def occurences ( t ) :
d={}
for x in t :
if x in d :
d [ x ] +=1
else :
7 d [ x]=1
return d

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 :)

Bonne journée et bon travail !

View image CLEMENTCG
View image CLEMENTCG
View image CLEMENTCG
View image CLEMENTCG
View image CLEMENTCG

© 2024 IDNLearn. All rights reserved.