Épreuve pratique NSI

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 :

RecetteFruits
TropicalMangue, Ananas, Banane
RougeFraise, Framboise, Cerise
VertKiwi, Pomme verte, Menthe
AgrumeOrange, Citron, Pamplemousse
ExotiquePapaye, Fruit de la passion, Noix de coco
Tropical citronMangue, Ananas, Citron
Rouge kiwiFraise, Framboise, Kiwi
Exotique rougePapaye, Fraise, Fruit de la passion
Vert citronKiwi, Pomme verte, Citron
Soleil couchantMangue, 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.

1

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

  1. Dans smoothie_possible, à quoi correspond le paramètre self ? Pourquoi est-il indispensable pour accéder à liste_fruits_disponibles et db_smoothies ?
  2. Quel est le type de la valeur renvoyée ? Pourquoi peut-on renvoyer False dès qu'un fruit manque ?
Point de vigilance

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
2

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

  1. Pourquoi appeler self.smoothie_possible(nom) plutôt que réécrire le test d'appartenance ? Quel avantage si la règle de smoothie_possible change ?
Point de vigilance

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
3

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

  1. Que contient nb avant la boucle, et que représente-t-il à la fin ? Décrivez la boucle for fruit in fruits1.
  2. Pourquoi peut-on créer Boutique_smoothie([]) avec une liste vide pour tester score_proximité ?
Point de vigilance

Des tests pertinents couvrent 0, 1, 2 et 3 fruits communs.

4

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

  1. La version fournie parcourt tous les smoothies de db_smoothies. Quel problème cela pose-t-il ? Montrez-le avec test_plus_proche_possible.
  2. Pourquoi faut-il exclure le smoothie de référence lui-même ?
  3. smoothie_proche vaut d'abord None. Dans quel cas la méthode le renvoie-t-elle, et où ce cas est-il géré dans affichage_possibles ?
  4. Pour « Soleil couchant », Tropical et Tropical citron ont le même score. Lequel est renvoyé, et pourquoi ?
Point de vigilance

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
5

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

  1. 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.

Chargement de Python…