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)
(Shift+Esc ; 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)
(Shift+Esc ; 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)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)
Aide
Vous pourrez définir un dictionnaire vide pour commencer.
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)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)
Astuce 1
Vous pouvez partir d'une liste vide
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.
Solution
def top_3_candidats(notes):
"""
Renvoie une liste contenant les 3 meilleurs candidats
Prend en entrée un dictionnaire de noms/notes
"""
top_liste = [] #Initialise une liste vide pour creer la liste des 3 meilleurs
for i in range(3): # On cherche les 3 premiers
note_max = -1 # Initialisation pour entrer dans la boucle
# de recherche de la plus grande note
for (nom, note) in notes.items(): #parcourt du dictionnaire
if note > note_max: # recherche de note maximale
note_max = note
premier = nom # nom associe
notes.pop(premier) # supprime cet item du dictionnaire
# on cherche l'éleve de note maximale parmi
# ceux qui restent
top_liste.append(premier) # Ajoute ce candidat à la liste des 3 vainqueurs
return top_liste
Le bon enclos
Anniversaires
Valeurs extrêmes
Dictionnaire d'occurences
Top likes
Dictionnaire des antécédents
Dictionnaire de likes
Les Pokémon
⌛ Une correction viendra plus tard ...
🏰 🐉 Mini-projet 🐉 🏰
⌛ Une correction du mini-projet viendra plus tard ...
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".
😀 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 ...
# Tests
(insensible à la casse)(Ctrl+I)
(Shift+Esc ; Ctrl pour inverser les colonnes)
(Esc)