Vous devez écrire une fonction compte_mots qui prend une chaîne de caractères comme argument et retourne un dictionnaire avec le nombre d'occurrences de chaque mot dans la chaîne.

Les mots dans la chaîne sont séparés par des espaces et vous ne devez pas tenir compte de la casse (majuscules/minuscules).

Utilisez la classe Counter du module collections pour réaliser cet exercice.

Exemple

>>> compte_mots("Bonjour le monde le bonjour")
{'bonjour': 2, 'le': 2, 'monde': 1}
Afficher l'aide

Pour séparer les mots d'une phrase sur les espaces, vous pouvez utiliser la méthode split.

code Code

from collections import Counter

def compte_mots(phrase):
    mots = phrase.lower().split()
    compteur = Counter(mots)
    return dict(compteur)

comment Explications

Dans cet exemple, la fonction compte_mots utilise Counter pour créer un dictionnaire où les clés sont les mots de la phrase, tous transformés en minuscules pour une comparaison insensible à la casse avec la méthode lower.

On a également séparé les mots de la phrase avec la méthode split qui sépare par défaut sur les espaces et nous retourne une liste

Les valeurs de l'objet retourné par Counter correspondent au nombres d'occurrences de chaque mot dans la liste.

Pour finir, on retourne le résultat sous forme de dictionnaire grâce au constructeur dict.

star Points importants

  • Pour mettre une chaîne de caractères en minuscules, on utilise la méthode lower.

  • Pour séparer une chaîne de caractères en liste sur les espaces, on utilise split sans argument.

  • Pour compter le nombre d'occurrences d'éléments dans une liste, on utilise la classe Counter du module collections.

from collections import Counter

def compte_mots(phrase):
    mots = phrase.lower().split()
    compteur = Counter(mots)
    return dict(compteur)

Console

Un instant...
terminal

Résultats

/ 3 tests validés

Test avec la chaîne de caractères "Bonjour le monde le bonjour"

assert compte_mots("Bonjour le monde le bonjour") == {'bonjour': 2, 'le': 2, 'monde': 1}, "La fonction ne retourne pas le bon résultat"

        

Test avec la chaîne de caractères "Chat chat CHAT"

assert compte_mots("Chat chat CHAT") == {'chat': 3}, "La fonction ne retourne pas le bon résultat"

        

Test avec une chaîne de caractères vide

assert compte_mots("") == {}, "La fonction ne retourne pas le bon résultat."
assert type(compte_mots("")) == dict, "La fonction ne retourne pas un dictionnaire."

        

Bravo, tu as réussi cet exercice de code 🥳

🚀

Envoyer ma solution

Vous avez trouvé une solution alternative pour cet exercice ? Proposez votre solution à la communauté 👇

Seules les propositions différentes de la solution proposée par Docstring peuvent être envoyées.

Ma solution :

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.