Python

Les Dictionnaires
Exercices pour progresser

Compter des occurences

Vous pouvez télécharger ici le fichier à compléter pour cet exercice.

Question 1

Complétez la définition de la fonction occurences() en respectant les spécifications.


def occurrences(sequence):
    """
    sequence – Une séquence ordonnée (tuple, list ou str)
    Sortie: dict – dictionnaire tel que :
            - les clefs sont les valeurs de la séquence
            - les valeurs sont les occurrences de ces clefs dans la séquence
    >>> occurrences([4, 2, 3, 4, 1, 4, 3, 4])
    {4: 4, 2: 1, 3: 2, 1: 1}
    >>> occurrences("abracadrabra")
    {'a': 5, 'b': 2, 'r': 3, 'c': 1, 'd': 1}
    """
    # TODO
				
				

Question 2

Complétez la définition de la fonction compte_mots() en respectant les spécifications.


def compte_mots(chaine):
    """
    chaine – str, une chaîne de caractère comportant des espaces
    Sortie: dict – dictionnaire tel que :
            - les clés sont les mots de la chaine
            - les valeurs sont les occurrences des mots
    >>> compte_mots("a b a c ab")
    {'a': 2, 'b': 1, 'c': 1, 'ab': 1}
    """
    # TODO
				
				
  • Une piste ?
La méthode .split() pourrait vous aider...
Cf cette page pour plus de détails...

Question 3

Téléchargez le texte du « Petit Chaperon Rouge » puis enregistrez-le dans votre répertoire de travail.
Dans le programme principal, importez ce texte puis écrivez les instructions nécessaires pour afficher, dans la console, chaque mot de ce texte suivi de son nombre d'occurrences dans le texte.

  • Une piste ?
  • Affichage à obtenir

Si f est le nom d'une variable faisant référence à un fichier texte, alors f.read() renvoie le contenu de ce fichier texte sous la forme d'une unique chaîne de caractères.

	
Il : 9
etait : 9
une : 8
fois : 4
adorable : 1
petite : 1
fille : 1
que : 22
tout : 11
le : 51
	

Question 4

Complétez la définition de la fonction compte_tous_mots() en respectant ses spécifications.

					
def compte_tous_mots(chaine):
    """
    chaine – str, une chaîne de caractère comportant des espaces
    Sortie: dict – dictionnaire tel que :
            - les clés sont des entiers (longueurs possibles pour un mot)
            - les valeurs sont les occurrences des mots ayant cette longueur
    >>> compte_tous_mots("a b a c ab")
    {1: 4, 2: 1}
    """
    # TODO
					
				

Appliquez ensuite, dans le programme principal, cette fonction au texte du « Petit Chaperon Rouge ».

  • Affichage à obtenir
  • Une piste ?
{2: 454, 5: 241, 3: 189, 4: 295, 8: 78, 6: 120, 1: 98, 7: 109, 9: 22, 10: 9, 12: 1, 13: 1, 11: 1}

Toujours la méthode .split()...

Question 5

Complétez la définition de la fonction tab_plus_frequent() qui prend en paramètre un dictionnaire dont les clefs sont des chaînes de caractères et un entier strictement positif longueur. Cette fonction renvoie un tableau constitués des chaînes de caractères de taille la longueur spécifiée et associées à la plus grande valeur dans le dictionnaire.

					
def tab_plus_frequent(dico, longueur):
    """
    dico – dictionnaire de chaines avec leur occurence
    Sortie : string – chaine de taille longueur ayant
             l'occurence la plus grande.
    >>> tab_plus_frequent({'a': 3, 'b': 2, 'c': 3, 'ab': 5}, 1)
    ['a', 'c']
    """
    # TODO
					
				

Appliquez ensuite, dans le programme principal, cette fonction au dictionnaire obtenu à la question 3. à partir du texte du « Petit Chaperon Rouge » afin d'afficher, pour chaque longueur possible de mot, le (ou les) plus présents dans le texte.

  • Affichage à obtenir
  • Une piste ?
1 carac : ['a'] avec 32 occurences
2 carac : ['et'] avec 61 occurences
3 carac : ['que'] avec 22 occurences
4 carac : ['mere'] avec 31 occurences
5 carac : ['grand'] avec 29 occurences
6 carac : ['encore'] avec 6 occurences
7 carac : ['galette'] avec 5 occurences
8 carac : ['Chaperon'] avec 24 occurences
9 carac : ['bouteille', 'engloutir'] avec 2 occurences
10 carac : ['rencontrer', 'noisetiers', 'brillaient', 'satisfaite', 'approchant', 'fourrerent', 'retrouvant', 'cadenasser', 'intentions'] avec 1 occurences
11 carac : ['Allegrement'] avec 1 occurences
12 carac : ['reconnaitras'] avec 1 occurences
13 carac : ['renseignement'] avec 1 occurences

C'est un algorithme de recherche du maximum légèrement modifié. Lorsqu'on rencontre un nouveau maximum, on ré-initialise le tableau ; lorsqu'on rencontre un mot de même « valeur », on l'incorpore au tableau.