Sujet n° 6 · Session 2026 · 1 heure
Une carte dynamique de smoothies
La maison des lycéens veut afficher les smoothies réalisables avec les fruits du jour, et proposer une alternative proche quand une recette manque. Programmation objet, parcours de dictionnaire et un bug de logique à trouver par les tests.
- Programmation objet
- Méthodes
- Dictionnaires
- Tests et assertions
- Débogage
Mise en situationLes recettes
La classe Boutique_smoothie est créée avec la liste des fruits disponibles du jour. Chaque recette est composée de trois fruits :
| Recette | Fruits |
|---|---|
| Tropical | Mangue, Ananas, Banane |
| Rouge | Fraise, Framboise, Cerise |
| Vert | Kiwi, Pomme verte, Menthe |
| Agrume | Orange, Citron, Pamplemousse |
| Exotique | Papaye, Fruit de la passion, Noix de coco |
| Tropical citron | Mangue, Ananas, Citron |
| Rouge kiwi | Fraise, Framboise, Kiwi |
| Exotique rouge | Papaye, Fraise, Fruit de la passion |
| Vert citron | Kiwi, Pomme verte, Citron |
| Soleil couchant | Mangue, Fraise, Pamplemousse |
Une alternative est un smoothie réalisable qui partage un maximum de fruits avec le smoothie d'origine.
Toutes les cellules de cette page partagent le même Python, comme un notebook : une fonction écrite à une question sert aux suivantes. Maj + Entrée exécute la cellule.
Question 1Un smoothie est-il possible ?
On souhaite connaître les smoothies réalisables avec les fruits disponibles. La liste des fruits disponibles est initialisée lors de la création de l'objet Boutique_smoothie. Une recette est possible si tous ses ingrédients sont disponibles.
Écrire en Python une fonction nommée smoothie_possible qui prend en paramètre une chaîne de caractères représentant le nom d'un smoothie et qui renvoie un booléen qui indique s'il est possible de réaliser ce smoothie.
Cette cellule contient toute la classe : les méthodes des questions 2 et 4 s'y trouvent aussi.
Appel professeur
À demander au candidat
- Dans
smoothie_possible, à quoi correspond le paramètreself? Pourquoi est-il indispensable pour accéder àliste_fruits_disponiblesetdb_smoothies? - Quel est le type de la valeur renvoyée ? Pourquoi peut-on renvoyer
Falsedès qu'un fruit manque ?
Il faut parcourir les fruits de la recette (self.db_smoothies[nom_smoothie]) et non la liste des fruits disponibles.
Résultats attendus
- « Tropical », exemple de l'énoncé
True- « Soleil couchant »
False
Question 2La liste des smoothies possibles
Écrire en Python une fonction nommée liste_smoothies_possibles qui ne prend pas de paramètre et qui renvoie la liste des recettes possibles.
Appel professeur
À demander au candidat
- Pourquoi appeler
self.smoothie_possible(nom)plutôt que réécrire le test d'appartenance ? Quel avantage si la règle desmoothie_possiblechange ?
Réutiliser smoothie_possible : un appel de méthode sur self, pas une copie de la logique.
Résultats attendus
- Fruits de la question 5
- Tropical, Tropical citron, Vert citron
Question 3Tester le score de proximité
Les alternatives permettent de proposer à un utilisateur qui souhaiterait un smoothie non disponible des smoothies de compositions proches. Une fonction score_proximité renvoie le score de proximité entre deux smoothies, calculé en comptant le nombre de fruits communs.
Pour tester la fonction score_proximité, compléter la fonction test_score_proximité avec des tests pertinents.
Appel professeur
À demander au candidat
- Que contient
nbavant la boucle, et que représente-t-il à la fin ? Décrivez la bouclefor fruit in fruits1. - Pourquoi peut-on créer
Boutique_smoothie([])avec une liste vide pour testerscore_proximité?
Des tests pertinents couvrent 0, 1, 2 et 3 fruits communs.
Question 4Le plus proche possible
La fonction plus_proche_possible renvoie le nom correspondant au smoothie possible le plus proche du smoothie passé en paramètre.
Observer avec la fonction test_plus_proche_possible que le smoothie renvoyé n'est pas le bon. Identifier le problème dans la fonction plus_proche_possible. Proposer une démarche de résolution et la mettre en œuvre.
La méthode plus_proche_possible se trouve dans la classe, à la question 1.
Appel professeur
À demander au candidat
- La version fournie parcourt tous les smoothies de
db_smoothies. Quel problème cela pose-t-il ? Montrez-le avectest_plus_proche_possible. - Pourquoi faut-il exclure le smoothie de référence lui-même ?
smoothie_prochevaut d'abordNone. Dans quel cas la méthode le renvoie-t-elle, et où ce cas est-il géré dansaffichage_possibles?- Pour « Soleil couchant », Tropical et Tropical citron ont le même score. Lequel est renvoyé, et pourquoi ?
Deux défauts : le smoothie de référence se trouve lui-même (score 3), et un smoothie non réalisable peut être proposé.
Résultats attendus
- « Tropical », fruits de la question 5
- Tropical citron
- « Exotique »
None
Question 5La carte du jour
Créer une boutique avec les ingrédients suivants : Mangue, Ananas, Banane, Fraise, Citron, Kiwi et Pomme verte et afficher les smoothies réalisables.
Appel professeur
À demander au candidat
- Quelle différence entre créer la boutique et appeler une de ses méthodes ? Montrez les deux lignes.
Résultats attendus
- Réalisables
- Tropical, Tropical citron, Vert citron
- Rouge, Exotique, Exotique rouge
- aucune alternative
- Vert, Rouge kiwi
- Vert citron
- Agrume
- Tropical citron
- Soleil couchant
- Tropical
Le fichier du candidat
Le jour de l'épreuve, le candidat travaille dans un seul fichier. Ce bouton rassemble vos cellules dans l'ordre, telles qu'elles sont à l'écran, en un smoothie.py à ouvrir dans votre éditeur habituel.