Aller au contenu

Exercices sur les dictionnaires

Admis ou pas

On considère le dictionnaire ci-dessous dont les clés sont les noms des élèves et les valeurs des clés sont les moyennes générales obtenues en passant l'examen final.

🐍 Script Python
etudiants = {"etudiant_1" : 13 , "etudiant_2" : 17 , "etudiant_3" : 9 , "etudiant_4" : 15 , 
"etudiant_5" : 8 , "etudiant_6" : 14 , "etudiant_7" : 16 , "etudiant_8" : 12 , 
"etudiant_9" : 13 , "etudiant_10" : 15 , "etudiant_11" : 14 , "etudiant_112" : 9 , 
"etudiant_13" : 10 , "etudiant_14" : 12 , "etudiant_15" : 13 , "etudiant_16" : 7 ,
"etudiant_17" : 12 , "etudiant_18" : 15 , "etudiant_19" : 9 , "etudiant_20" : 17 }
Écrire un programme Python qui partitionne ce dictionnaire en deux sous dictionnaires etudiantAdmis et etudiantNonAdm, l'admission étant effective si l'étudiant à une note supérieure ou égale à 10.

Pokemons

On modélise des informations (nom, taille et poids) sur des Pokémons de la façon suivante:

🐍 Script Python
exemple_pokemons = {
'Bulbizarre': (70, 7),
'Herbizarre': (100, 13),
'Abo': (200, 7),
'Jungko': (170, 52)
}
Par exemple, Bulbizarre est un pokémon qui mesure 70 cm et pèse 7 kg.

  1. Ajouter le pokémon Goupix qui mesure 60 cm et pèse 10 kg.
  2. Completer la fonction plus_grand qui prend en paramètre un dictionnaire et qui renvoie un tuple contenant le nom du pokemon le plus grand et sa taille.
    🐍 Script Python
    def plus_grand(pokemons: dict) -> tuple:
        nom_plus_grand = ''
        taille_max = 0
        for ... in pokemons. :
            if  ...> taille_max:
                nom_plus_grand = ...
                taille_max = ...
        return ....
    

Personnalités

Voici un dictionnaire dates dont les clés sont des prénoms au format str et les valeurs des dates de naissance au format tuple.

🐍 Script Python
dates = {
    "Alan": (23, 6, 1912),
    "Grace": (9, 12, 1906),
    "Linus": (28, 12, 1969),
    "Guido": (31, 1, 1956),
    "Ada": (10, 12, 1815),
    "Tim": (8, 6, 1955),
    "Dennis": (9, 9, 1941),
    "Hedy": (9, 11, 1914),
    "Steve": (24, 2, 1955)
    }
Par exemple, Linus est né le 28 décembre 1969.

  1. Ajouter les deux entrées suivantes: Margaret, née le 17 août 1936 et John, né le 28 décembre 1903.

  2. Écrire une fonction calendrier qui prend en paramètre un dictionnaire constitué d'entrées nom: (jour, mois, année) comme dates et qui renvoie un dictionnaire dont les clés sont les mois de l'année et les valeurs les listes des noms nés ce mois-là. Par exemple, calendrier(dates) doit renvoyer un dictionnaire contenant l'entrée "juin": ["Alan", "Tim"].

  3. Écrire une fonction plus_jeune qui renvoie le nom de la personne la plus jeune du dictionnaire.

Scrabble

On dispose du dictionnaire ci-dessous, dans lequel chaque lettre de l'alphabet (en majuscules) est associé au nombre de points qui lui est attribué au scrabble.

🐍 Script Python
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}
Écrire des instructions Python qui à partir d'une chaîne de caractère (constituée de lettre majuscules uniquement) affiche le nombre de points que rapporterait cette chaîne de caractères au scrabble.

Code Morse

Ci-dessous, un célèbre texte a été écrit en code morse. Décodez le!

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
texte_morse = """
-- .- .. ... ...- --- ..- ... ... .- ...- . --.. -- --- .. .--- . -. .
-.-. .-. --- .. ... .--. .- ... --.- ..- .. .-.. -.-- .- .. - -.. . -... ---
-. -. . --- ..- -.. . -- .- ..- ...- .- .. ... . ... .. - ..- .-
- .. --- -. -- --- .. ... .. .--- . -.. . ...- .- .. ... .-. . ...
..- -- . .-. -- .- ...- .. . .- ..- .--- --- ..- .-. -.. .... ..- .. .-
...- . -.-. ...- --- ..- ... .--- . -.. .. .-. .- .. ... --.- ..- . -.-. .
... - -.. .- -... --- .-. -.. -.. . ... .-. . -. -.-. --- -. - .-. .
... -.. . ... --. . -. ... --.- ..- .. -- --- -. - - . -. -.. ..-
.-.. .- -- .- .. -. .--. . ..- - . - .-. . .- ..- -. -- --- --
. -. - --- ..- .--- . -. . .--. --- ..- ...- .- .. ... .--. .- ... ---
..- .--- . - .- .. ... ... . ..- .-.. -.-. .... . --.. -- --- .. . -
-.-. . ... - .- ... ... . --.. -.-. ..- .-. .. . ..- -..- -.. . ... .
-.. .. .-. . --.- ..- . .-.. . ... .... .- ... .- .-. -.. ... .-.. . ...
.-. . -. -.-. --- -. - .-. . ... ..-. --- .-. --. . -. - ..- -. .
-.. . ... - .. -. . . .--. .- .-. -.-. . --.- ..- . --.- ..- .- -.
-.. --- -. .- .-.. . --. --- ..- - -.. . .-.. .- -.-. .... --- ... . --.-
..- .- -. -.. --- -. .- .-.. . --. --- ..- - -.. . .-.. .- -.-. .... ---
... . -... .. . -. ..-. .- .. - . .-.. . -... . .- ..- --. . ...
- . .--. .- .-. ..-. --- .. ... --- -. -. . - .-. --- ..- ...- . .--.
.- ... .-.. .. -. - . .-. .-.. --- -.-. ..- - . ..- .-. . -. ..-. .-
-.-. . .--- . -.. .. .-. .- .. ... .-.. . -- .. .-. --- .. .-. --.- ..-
.. ...- --- ..- ... .- .. -.. . .- .- ...- .- -. -.-. . .-. .- .-.. ---
.-. ... -.-. . -. . ... - .--. .- ... -- --- -. -.-. .- ... -.-. --- --
-- . .--- . .-.. . -.. .. ... .- .. ... .-.. .- .--. ..- .. ... --.- ..-
. -- --- .. .- ..- -.-. --- -. - .-. .- .. .-. . .--- .- .. .--. ..-
. - .--- . -.. .. ... -- . .-. -.-. .. .- .-.. .- ...- .. . .--- .
.-.. ..- .. -.. .. ... -- . .-. -.-. .. .--- . -.-. .... .- -. - . .-..
.- ...- .. . .--- . -.. .- -. ... . .-.. .- ...- .. . .--- . -. .
... ..- .. ... --.- ..- .- -- --- ..- .-. . - ..-. .. -. .- .-.. . --
. -. - --.- ..- .- -. -.. -... . .- ..- -.-. --- ..- .--. -.. . --. .
-. ... .- ..- .--- --- ..- .-. -.. .... ..- .. -- . -.. .. ... . -. -
-- .- .. ... -.-. --- -- -- . -. - ..-. .- .. ... - ..- .--. --- ..-
.-. .- ...- --- .. .-. -.-. . - - . .... ..- -- .- -. .. - . .
.... -... .. . -. .--- . .-.. . ..- .-. .-. . .--. --- -. -.. ... - .-.
. ... ... .. -- .--. .-.. . -- . -. - .--- . .-.. . ..- .-. -.. ..
... --.- ..- . -.-. . ... - -.-. . --. --- ..- - -.. . .-.. .- -- ---
..- .-. -.-. . --. --- ..- - -.. --- -. -.-. --.- ..- .. -- .- .--. --- ..-
... ... . .- ..- .--- --- ..- .-. -.. .... ..- .. .- . -. - .-. . .--.
.-. . -. -.. .-. . ..- -. . -.-. --- -. ... - .-. ..- -.-. - .. ---
-. -- . -.-. .- -. .. --.- ..- . -- .- .. ... -.. . -- .- .. -.
--.- ..- .. ... .- .. - .--. . ..- - . - .-. . ... .. -- .--. .-..
. -- . -. - .- -- . -- . - - .-. . .- ..- ... . .-. ...-
.. -.-. . -.. . .-.. .- -.-. --- -- -- ..- -. .- ..- - . .- ..-. .-
.. .-. . .-.. . -.. --- -. .-.. . -.. --- -. -.. . ... --- ..
"""

Pour coder un texte en morse, on a besoin d'un dictionnaire de correspondance entre les lettres (majuscules) et leurs codes en morse.

Par exemple:

🐍 Script Python
1
morse_dict = { 'A':'.-', 'B':'-...', ...}

Ensuite il faut séparer la chaîne de caractères fournie sur les espaces pour obtenir la liste des codes: on utilise la méthode split .

Et enfin, en parcourant cette liste, on construit une nouvelle chaîne de caractères contenant le message décodé (variable accumulatrice).

Recherches extrêmes

Donner des instructions Python qui à partir d'un tableau de nombres tab non vide, renvoie la plus petite et la plus grande valeur du tableau sous la forme d’un dictionnaire à deux clés min et max.

On pourra ensuite définir la fonction min_et_max qui prend en paramètre le tableau et retourne le tuple.

Les tableaux seront représentés sous forme de liste Python.

L’utilisation des fonctions natives min, max et sorted, ainsi que la méthode sort n’est pas autorisée.

Exemples :

🐍 Script Python
>>> min_et_max([0, 1, 4, 2, -2, 9, 3, 1, 7, 1])
{'min': -2, 'max': 9}
>>> min_et_max([0, 1, 2, 3])
{'min': 0, 'max': 3}
>>> min_et_max([3])
{'min': 3, 'max': 3}
>>> min_et_max([1, 3, 2, 1, 3])
{'min': 1, 'max': 3}
>>> min_et_max([-1, -1, -1, -1, -1])
{'min': -1, 'max': -1}