EXERCICES : Dictionnaires


Exercice 1 :

On considère le dictionnaire suivant qui contient différents fruits ainsi que leurs quantités.

In [ ]:
fruits = {"pommes": 8, "melons": 3, "poires": 6}
  1. Quelle instruction permet d'afficher le nombre de melons ?
In [ ]:
 
  1. On a acheté 16 clémentines et utilisé 4 pommes pour faire une tarte. Quelles instructions permettent de mettre à jour le dictionnaire ?
In [ ]:
 

Exercice 2 :

Répondez aux questions suivantes sans exécuter les scripts proposés. Vous les exécuterez pour vérifier vos réponses.

  1. Qu'affiche le programme suivant ?
In [ ]:
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
for c in fruits.keys():
    print(c)
  1. Qu'affiche le programme suivant ?
In [ ]:
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
for cle, valeur in fruits.items():
    print(cle, "->", valeur)
  1. Qu'affiche le programme suivant ?
In [ ]:
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
for v in fruits.values():
    print(v)

Exercice 3

On considère qu'il faut ajouter un fruit sur la liste des courses s'il en reste 4 ou moins.

  1. Ecrivez un programme qui affiche les éléments de la liste des courses en considérant le dictionnaire suivant.
In [ ]:
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
# à compléter
  1. Ecrivez une fonction liste_courses(fruits) qui prend en paramètre un dictionnaire fruits et qui renvoie un tableau avec les fruits de la liste de courses.
In [ ]:
def liste_courses(fruits):
    # ------------
    # à compléter
    # ------------

# TEST :
fruits = {'pommes': 4, 'melons': 3, 'poires': 6, 'clémentines': 16}
liste_courses(fruits)

Exercice 4 : dictionnaire dont les valeurs sont des tuples, des dictionnaires

Voici deux dictionnaires :

In [ ]:
athletes = {"Mike": (1.75, 68), "John": (1.89, 93), "Kate": (1.67, 62)}
sportifs = {"Mike": {"taille": 1.75,"poids": 68}, "John": {"taille": 1.89,"poids": 93}, "Kate": {"taille": 1.67,"poids": 62}}
  1. De quel type sont les clés des deux dictionnaires athletes et sportifs? De quels types sont les valeurs de ces deux dictionnaires ?

Réponses :

  1. Comment peut-on accéder à la taille de Kate dans le dictionnaire athletes ?
In [ ]:
 
  1. Comment peut-on accéder à la taille de Kate dans le dictionnaire sportifs ?
In [ ]:
 

Exercice 5 :

Le Scrabble est un jeu de société où l'on doit former des mots avec tirage aléatoire de lettres, chaque lettre valant un certain nombre de points. Le dictionnaire scrabble contient cette association entre une lettre et son nombre de points.

In [ ]:
scrabble = {'A': 1, 'B': 3, 'C': 3, 'D': 2, 'E': 1, 'F': 4, 'G': 2, 'H': 4, 'I': 1, 'J': 8, 'K': 10, 'L': 1, 'M': 2, 'N': 1, 'O': 1, 'P': 3, 'Q': 8, 'R': 1, 'S': 1, 'T': 1, 'U': 1, 'V': 4, 'W': 10, 'X': 10, 'Y': 10, 'Z': 10}

Ecrivez une fonction points(mot) qui renvoie le nombre de points au scrabble de mot, qui est une chaîne de caractères majuscules.

*Par exemple, le mot "ARBRE" doit rapporter 7 points, le mot "XYLOPHONE" doit rapporter 32 points.

In [ ]:
 

Exercice 6

On considère la variable personnages suivante qui réunit quelques informations sur des personnalités (les âges sont fictifs, vous l'aurez compris).

In [ ]:
personnages = [{'nom': 'Einstein', 'prénom': 'Albert', 'âge': '35', 'genre': 'm'},
           {'nom': 'Hamilton', 'prénom': 'Margaret', 'âge': '23', 'genre': 'f'},
           {'nom': 'Nelson', 'prénom': 'Ted', 'âge': '64', 'genre': 'm'},
           {'nom': 'Curie', 'prénom': 'Marie', 'âge': '41', 'genre': 'f'}]
  1. Quel est le type de la variable personnages? Quel est le type des éléments de personnages ?

Réponse :

  1. Quelle instruction permet d'afficher le dictionnaire de Ted Nelson ?
In [ ]:
 
  1. Quelle instruction permet d'afficher l'âge de Ted Nelson ?
In [ ]:
 
  1. Dans le programme suivant, quel est le type de la variable p à chaque tour de boucle ? Quel est le rôle de ce programme ?
for p in personnages:
    if int(p['âge']) <= 40:
        print(p['nom'], p['prénom'])
  1. Proposez un programme qui affiche uniquement les noms et prénoms des femmes du tableau personnages.
In [ ]:
 
  1. Ecrivez une fonction age_moyen(personnages) qui renvoie l'âge moyen des personnalités du tableau personnages entré en paramètre. On doit trouver 40,75 ans.
In [ ]:
    

Exercice 7 : Nombres d'occurences et Jules Verne

Un cas d’utilisation typique des dictionnaires consiste à compter les occurrences des éléments d’un tableau.

Considérons par exemple le tableau suivant :

['b', 'c', 'e', 'b', 'c', 'j', 'd', 'b', 'j', 'a', 'b']

Dans cette liste le caractère 'b' est par exemple répété quatre fois, et le 'j' deux fois, etc. L'objectif est de définir une fonction occurrences(t) qui renvoie un dictionnaire avec le nombre d'occurences de chaque élément du tableau t entrée en paramètre.

Par exemple, la fonction occurences appliquée au tableau précédent

occurrences(['b', 'c', 'e', 'b', 'c', 'j', 'd', 'b', 'j', 'a', 'b'])

doit renvoyer le dictionnaire :

{'b': 4, 'a': 1, 'c': 2, 'e': 1, 'j': 2, 'd': 1}

Partie 1 : Création de la fonction

  1. Dans le dictionnaire souhaité, que représentent les clés et les valeurs par rapport au tabeau entré en paramètre ?

Réponse :

  1. Ecrivez la fonction occurrences(t) et testez-la sur un tableau de caractères.
In [ ]:
 

Partie 2 : Quel est le mot de 6 lettres le plus présent dans Le tour du monde en 80 jours ?

L'idée est désormais d'appliquer cette fonction pour compter le nombre d'occurences de chaque mot dans le texte du Tour du monde en 80 jours de Jules Verne.

Commencez par télécharger le fichier texte de l'oeuvre sur le site info-mounier.fr. Par souci de simplification, le texte ne contient aucun signe de ponctuation. De manière générale, le site du Projet Gutenberg permet de récupérer librement le texte de plusieurs milliers d'oeuvres du domaine public : https://www.gutenberg.org.

On va d'abord transformer ce fichier en un tableau de mots. Pour cela, il suffit d'ouvrir le texte de l'oeuvre, en lire le contenu sous la forme d'une unique chaîne de caractères avec la méthode read(), puis de la transformer en un tableau de mots grâce à la méthode split(), avant de fermer le fichier.

In [ ]:
f = open("ltdme80j.txt", mode = "r", encoding = "utf-8")
texte = f.read()
tab = texte.split()
f.close()
#print(texte)
print(tab)
  1. Appliquez la fonction occurences à ce tableau pour récupérer un dictionnaire d du nombre d'occurences de chaque mot.
In [ ]:
 
  1. Ecrivez une fonction mot_6_lettres_plus_frequent(d) qui renvoie le mot de 6 lettres les plus fréquent dans l'oeuvre de Jules Verne ainsi que son nombre d'occurence. (réponse : 'heures' avec 243 occurrences)
In [ ]:
 
  1. Bonus : Ecrire une fonction mot_plus_frequent(d, k) qui renvoie le mot de k lettres le plus présent dans le dictionnaire d.
In [ ]:
 

Références

  • Numérique et Sciences Informatiques, 1re, T. BALABONSKI, S. CONCHON, J.-C. FILLIATRE, K. NGUYEN, éditions ELLIPSES : Site du livre
  • Numérique et Sciences Informatiques, Stéphane PASQUET, Interro des lycées, NATHAN

Germain BECKER & Sébastien POINT, Lycée Mounier, ANGERS Licence Creative Commons