Exercices
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Ăč :
produits
est 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.catalogue
est 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Ă© ĂTrue
existe('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Ă© (đ ).
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)