Feuille 5 : Dictionnaires
Rappels de la syntaxe :
dico = {clé_a: valeur_a, clé_b: valeur_b, ...}
val = dico[clé_a]
➤ permet de récupérer la valeur associée à la clé clé_a si elle existe
dico[clé_a] = x
➤ permet d’ajouter la paire clé_a/x si la clé clé_a n’existe pas ou de modifier la valeur associée à la clé clé_a si elle existe déjà
list(dico.keys())
➤ permet de transformer le dictionnaire en une liste de ses clés
list(dico.values())
➤ permet de transformer le dictionnaire en une liste de ses valeurs
for cl in dico:
➤ permet de parcourir le dictionnaire par les clés
for c, v in dico.items():
➤ permet de parcourir le dictionnaire par les paires clé/valeur
Exercice 1 : Les animaux de la ferme
L’inventaire des animaux d’une ferme est stocké dans un dictionnaire : d = {'poule': 12, 'chien':2, 'moutons':34}
1) Écrire l’instruction qui permet de récupérer le nombre de chiens de la ferme dans la variable nb_chiens.
2) La ferme accueille 5 chevaux. Écrire l’instruction qui permet de mettre à jour le dictionnaire.
3) Écrire l’instruction qui permet de stocker la liste des noms des animaux présents dans la variable l_animaux.
4) Écrire le code d’une fonction nb_animal(ch:str) -> int qui prend un nom d’animal en paramètre et renvoie le nombre de cet animal ou 0.
5) Écrire le code (plusieurs lignes) qui permet de connaitre le nombre total d’animaux de la ferme.
Exercice 2 : Affichage propre
Écrire une fonction qui prend un dictionnaire en paramètre et affiche, ligne par ligne, toutes les paires clé/valeur de ce dictionnaire.
Exercice 3 : Inversion clé/valeur
Écrire une fonction qui prend un dictionnaire en paramètre et renvoie un nouveau dictionnaire dans lequel les valeurs sont devenues les clés et les clés sont devenues les valeurs.
Exercice 4 : Histogramme d’un texte
Écrire une fonction histo(ch: str) -> dict qui prend un texte en paramètre et renvoie un dictionnaire dont les clés sont les caractères du texte et les valeurs, le nombre d’occurrences de chaque caractère.
🖳 Exemple (en ligne de commande) :
>>> histo("bonjour")
{'b': 1, 'o': 2, 'n': 1, 'j': 1, 'u':1, 'r': 1}
Exercice 5 : Salaires de employers d'une entreprise
Les informations concernant les employers d'une entreprise sont stockées dans un dictionnaire dont un extrait est donné ci-dessous :
dic_employers = {
'emp1': {'nom': 'Jhon', 'salaire': 2500},
'emp2': {'nom': 'Emma', 'salaire': 3000},
'emp3': {'nom': 'Victor', 'salaire': 1500}
}
1) Ecrire la ligen de code qui permet de modifier le salaire d'Emma pour qu'il devienne 3200.
2) Ecrire la ligne de code qui permet de calculer la moyenne des salaires des employers de l'entreprise.
Exercice 6 : Premier ou non !
1) Écrire la fonction diviseurs(n:int) -> list qui prend un nombre entier n en paramètre et renvoie une liste des diviseurs de n.
2) Écrire la fonction est_premier(n:int) -> bool qui prend un nombre entier n en paramètre et renvoie True si n est un nombre premier et False sinon.
3) Écrire la fonction dico_est_premier(n:int) -> dict qui prend un nombre entier n en paramètre et renvoie un dictionnaire dont les clés sont les entiers de 1 à n et les valeurs associées, des booléens indiquant si l’entier est premier.
🖳 Exemple (en ligne de commande) :
>>> dico_est_premier(7)
{1: False, 2: True, 3: True, 4: False, 5: True, 6: False, 7: True}
Exercice 7 : Codage
Le but de cet exercice est de coder un texte en faisant correspondre un caractère à un autre.
Pour cet exercice, dans le module random, seule la fonction randint est autorisée. On rappelle que la méthode pop(i) appliquée à une liste supprime et renvoie le ième élément de la liste.
On dispose de la variable liste_caracteres = ['a', 'b', 'c' ... '!', '.'] contenant tous les caractères avec lesquels on souhaite travailler.
1) Écrire la fonction creer_dico_pour_codage() -> dict qui renvoie un dictionnaire qui permet le codage d’une chaine de caractères en associant un caractère à un autre. Autrement dit, la fonction doit renvoyer un dictionnaire dont les clés sont les caractères de la liste liste_caracteres et les valeurs les caractères de la même liste dans un ordre différent.
2) Écrire une fonction qui prend une chaine de caractères et un dictionnaire de codage en paramètre et renvoie la chaine de caractères encodée.
3) Écrire une fonction qui prend une chaine de caractères encodée et un dictionnaire de codage en paramètre et renvoie la chaine de caractères décodée.