Exercices
Les exercices classiques⚓︎
Gaston ne se souvient plus ...
Gaston veut afficher le nombre de poules qu'il a dans sa ferme.
Solution
Pour vous aider à répondre, lisez "II. Comment accéder à une valeur ?" en suivant ce lien: Opérations
Gaston achète des animaux ...
Gaston achète 3 moutons. Il veut compléter le dictionnaire.
Solution
Pour vous aider à répondre, lisez "V. Comment ajouter une paire clé/valeur ?" en suivant ce lien: Opérations
Gaston vend des animaux
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 1, "cheval": 4}
Gaston a décidé de vendre un animal de chaque espèce. Evidemment, il possède au moins un animal de chaque espèce. Compléter la fonction suivante, qui diminue chaque valeur de 1 dans le dictionnaire "en place".
👉 Pour mettre au point votre script, vous pouvez passer le assert en commentaire en cliquant sur ### en haut à droite. Cliquer encore une fois reviendra en arrière.
Gaston vend encore des animaux
ferme_gaston = {"lapin": 5, "vache": 7, "cochon": 1, "cheval": 4}
Gaston a décidé de vendre un animal de chaque espèce. Evidemment, il possède au moins un animal de chaque espèce.
Compléter la fonction suivante, qui diminue chaque valeur de 1 dans le dictionnaire. On modifiera directement le dictionnaire (on dit que la modification est « en place »).
La solution de l'exercice précedent ne lui convient pas. En effet, un animal qui a un effectif de 0 ne doit pas se trouver dans
le dictionnaire.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Aide
Python interdit de modifier un dictionnaire lors de son parcours...
👉 Vous pouvez utiliser une liste Python a_supprimer
Gaston fait ses courses
Gaston a décidé de préparer sa liste de courses qu'il va commander, avant d'aller la chercher au DRIVE de son supermarché. Quel va être le montant de sa facture ?
Écrire une fonction calcul_prix(produits, catalogue) où :
produitsest un dictionnaire contenant, comme clés, les produits souhaités par Gaston et comme valeurs associées, la quantité désirée de chacun d’entre eux.catalogueest une dictionnaire contenant tous les produits du magasin avec leur prix associé.- La fonction renvoie le montant total des achats de Gaston.
Vous pourrez supposer que les arguments passés à la fonction sont du bon type, et que les produits souhaités par Gaston figurent bien dans le catalogue du magasin.
Exemple :
L’appel suivant de la fonction :
calcul_prix({"brocoli":2, "mouchoirs":5, "bouteilles d'eau":6},
{"brocoli":1.50, "bouteilles d'eau":1, "bière":2,
"savon":2.50, "mouchoirs":0.80})
doit renvoyer : 13.0
Compléter ci-dessous :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Solution
Remarque : les flottants
Le résultat qui devrait s'afficher pour calcul_prix(produits, catalogue) est 63,8. Or il s'affiche 63.79999999999999.
C'est un problème lié à l'encodage des nombres flottants. Nous étudierons ceci pendant l'année.
L'instruction assert calcul_prix(produits, catalogue) == 63.8 provoquerait un message d'erreur d'assertion. Il ne faut jamais comparer des nombres flottants entre eux ainsi.
Gaston fait des histogrammes
Gaston s'entraîne au jeu de scrabble. Quelles sont les lettres nécessaires pour écrire le mot "brontosaurus" ? Il faut une lettre "b", deux lettres "r", deux lettres "o" etc.
Pour aider Gaston, compléter la fonction qui prend en paramètre une chaine de caracères et renvoie le dictionnaires dont les clés sont chaque caractère, et la valeur associée le nombre de fois qu'il apparaît dans le mot.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Aide
Vous pourrez définir un dictionnaire vide pour commencer.
Le bon enclos
Anniversaires
Valeurs extrêmes
Dictionnaire d'occurences
Top likes
Dictionnaire des antécédents
Dictionnaire de likes
Questions
QCM sur les dictionnaires en Python. Une question peut avoir plusieurs bonnes propositions de réponse.
Compétences évaluées :
- 📝 Accéder aux éléments d’un dictionnaire
- 📝 Ajouter, modifier et supprimer des éléments
- 📝 Parcourir un dictionnaire avec une boucle
- 📝 Vérifier la présence d’une clé
- 📝 Travailler avec une liste de dictionnaires
- 📝 Inverser un dictionnaire
-
On dispose d'un dictionnaire stockant les prix de plusieurs articles en euros :
Quelle est la bonne syntaxe pour accéder au prix du clavier ?
-
prix_articles["clavier"] -
prix_articles(2) -
prix_articles["2"] -
prix_articles.get("2")
-
-
On considère le dictionnaire suivant représentant un carnet de notes :
Quelle instruction permet d’ajouter Léo avec une note de 12 ?
-
notes["Léo"] = 12 -
notes.add("Léo", 12) -
notes.insert("Léo", 12) -
notes.append("Léo", 12)
-
-
On a le dictionnaire suivant contenant des stocks de livres en bibliothèque :
Quelle expression permet de vérifier si le livre "JavaScript" est disponible dans ce dictionnaire ?
-
"JavaScript" in stock_livres -
stock_livres.contains("JavaScript") -
stock_livres.has_key("JavaScript") -
"JavaScript" in stock_livres.values()
-
-
On souhaite retirer Emma du carnet de notes suivant :
Quelle instruction faut-il utiliser ?
-
del notes["Emma"] -
notes.remove("Emma") -
notes.popitem("Emma") -
notes.clear("Emma")
-
-
On considère un dictionnaire contenant le nombre de médailles d’or remportées par des pays :
Quelle boucle permet d'afficher chaque pays et son nombre de médailles au format :
"Le pays [nom] a obtenu [nombre] médailles d’or."
-
On dispose du dictionnaire suivant qui donne les transports utilisés par des élèves pour se rendre au lycée :
Donner le code qui permet de tester si un transport fait partie des transports utilisés. Par exemple :
existe('bus')doit être évalué àTrueexiste('avion')doit être évalué àFalse
-
On a un tableau de dictionnaires contenant des informations sur des smartphones :
smartphones = [ {"modèle": "iPhone 14", "prix": 999, "marque": "Apple"}, {"modèle": "Galaxy S23", "prix": 899, "marque": "Samsung"}, {"modèle": "Pixel 7", "prix": 649, "marque": "Google"} ]Quelle instruction permet d’accéder au prix du Galaxy S23 ?
-
smartphones[1]["prix"] -
smartphones["Galaxy S23"]["prix"] -
smartphones[1].prix -
smartphones["prix"][1]
-
-
On a le dictionnaire suivant qui associe des étudiants à leurs matières préférées :
On veut construire un dictionnaire inverse qui associe chaque matière à la liste des étudiants qui l’aiment. Quelle boucle permet de le faire ?
source : Frédéric Junier
Les Pokémon
😀 Voici une correction à ne pas lire sans avoir travaillé (😅).
Pour aller plus loin (exercices facultatifs)⚓︎
La ferme de gaston avec GUI
On nomme GUI une Interface Graphique Utilisateur.
Jean-Louis Thirot en a préparé une pour aider Gaston à gérer sa ferme.
Le code se trouve dans le fichier gestion_ferme.py
🌐 Vous devez télécharger ce fichier : gestion_ferme.py : "Clic droit", puis "Enregistrer la cible du lien sous".
gestion_ferme.py
😀 Vous n'avez pas besoin de regarder le code de ce fichier, toutes les fonctions seront importées dans le fichier que vous devez compléter, et qui permet à Gaston de bien gérer sa ferme.
🌐 Vous devez télécharger ce second fichier : gestion_stock_2023.py: "Clic droit", puis "Enregistrer la cible du lien sous".
👉 Vos deux fichiers doivent être placés dans le même dossier.
- Avec votre éditeur Python habituel, ouvrez les deux fichiers.
- Exécutez le fichier
gestion_ferme.py. Vous verrez apparaître l'interface graphique. Vous pouvez la tester, mais elle ne fonctionne pas encore ... - Compléter les fonctions du fichier
gestion_stock_2023.py. Ne pas oublier d'enregistrer. Tester en exécutatntgestion_ferme.py, et corriger votre code jusqu'à ce qu'il fonctionne comme Gaston le voudrait.
Solution
⏳ La correction viendra bientôt ...
Top 3
Un jury doit attribuer le prix du « Codeur de l’année ».
Afin de récompenser les trois candidats ayant obtenu la meilleure note, nous vous demandons d’écrire une fonction top_3_candidats qui reçoit un dictionnaire contenant comme clés les noms des candidats et comme valeurs la note que chacun a obtenue.
Cette fonction doit renvoyer la liste contenant les noms des trois meilleurs candidats, par ordre décroissant de leurs notes.
Vous pourrez supposer que les candidats ont des notes différentes, et qu’ils sont plus que trois.
Exemple :
L’appel suivant de la fonction :
top_3_candidats({'Candidat 7': 2, 'Candidat 2': 38, 'Candidat 6': 85, 'Candidat 1': 8, 'Candidat 3': 17,
'Candidat 5': 83,'Candidat 4': 33})
doit renvoyer :
['Candidat 6', 'Candidat 5', 'Candidat 2']
Compléter ci-dessous :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Astuce 1
Vous pouvez partir d'une liste vide
La ligne dico = dict(notes) sert à éviter de détruire le dictionnaire notes
Astuce 2
Vous pouvez chercher la note maximale, supprimer la paire correspondante du dictionnaire de départ, ajouter le nom correspondant dans la liste cherchée. Il suffit de répéter ce processus 3 fois.
Astuce 3
La fonction pop peut vous aider.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)