Exercice 3 - Partie A · Bac Numérique et Sciences Informatiques Métropole 2024 (sujet 2)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Métropole France 2 (2024)
Énoncé
EXERCICE 3 (8 points)
Cet exercice porte sur la programmation orientée objet, les graphes et utilise la structure de données dictionnaire.
La direction de la station de ski Le Lièvre Blanc, spécialisée dans la pratique du ski de fond, souhaite disposer d'un logiciel lui permettant de gérer au mieux son domaine skiable. Elle confie à un développeur informatique la mission de concevoir ce logiciel. Celui-ci décide de caractériser les pistes de ski à l'aide d'une classe Piste et le domaine de ski par une classe Domaine.
Le code Python de ces deux classes est donné en Annexe.
Partie A – Analyse des classes Piste et Domaine
1. Lister les attributs de la classe Piste en précisant leur type.
La difficulté des pistes de ski de fond est représentée par 4 couleurs: verte, bleue, rouge et noire. La piste verte est considérée comme très facile, la piste bleue comme facile, la piste rouge de difficulté moyenne et la piste noire difficile. Dans la station de ski Le Lièvre blanc, l'équipe de direction décide de s'appuyer uniquement sur le dénivelé pour attribuer la couleur d'une piste de ski.
Ainsi, une piste de ski sera de couleur:
'noire' si son dénivelé est supérieur ou égal à 100 mètres;
'rouge' si son dénivelé est strictement inférieur à 100 mètres, mais supérieur ou égal à 70 mètres;
'bleue' si son dénivelé est strictement inférieur à 70 mètres, mais supérieur ou égal à 40 mètres;
'verte' si son dénivelé est strictement inférieur à 40 mètres.
2. Écrire la méthode set_couleur de la classe Piste qui permet d'affecter à l'attribut couleur la chaîne de caractères correspondant à la couleur de la piste.
On exécute à présent le programme suivant afin d'attribuer la couleur adéquate à chacune des pistes du domaine skiable Le Lièvre Blanc.
1 for piste in lievre_blanc.get_pistes():
2 piste.set_couleur()
3. Indiquer, parmi les 4 propositions ci-dessous, le type de l'élément renvoyé par l'instruction Python lievre_blanc.get_pistes().
En raison d'un manque d'enneigement, la direction de la station est souvent contrainte de fermer toutes les pistes vertes car elles sont situées généralement en bas du domaine.
4. Écrire un programme Python dont l'exécution permet de procéder à la fermeture de toutes les pistes vertes en affectant la valeur False à l'attribut ouverte des pistes concernées.
5. Écrire une fonction pistes_de_couleur prenant pour paramètres une chaîne de caractères couleur représentant la difficulté d'une piste et une liste lst de pistes de ski de fond. Cette fonction renvoie la liste des noms des pistes dont couleur est le niveau de difficulté.
Exemple: l'instruction pistes_de_couleur(lievre_blanc.get_pistes(), 'noire') renvoie la liste ['Petit Bonheur', 'Forêt', 'Duvallon'].
Un skieur de bon niveau se prépare assidûment pour le prochain semi-marathon, d'une distance de 21,1 kilomètres. À chaque entraînement, il note la liste des noms des pistes qu'il a parcourues et il souhaite disposer d'un outil lui indiquant si la distance totale parcourue est au moins égale à la distance qu'il devra parcourir le jour du semi-marathon.
La fonction semi_marathon donnée ci-dessous répond aux attentes du skieur: cette fonction prend en paramètre une liste L de noms de pistes et renvoie un booléen égal à True si la distance totale parcourue est strictement supérieure à 21,1 kilomètres, False sinon.
1 def semi_marathon(L):
2 distance =...
3 liste_pistes = lievre_blanc.get_pistes()
4 for nom in L:
5 for piste in liste_pistes:
6 if piste.get_nom() ==...:
7 distance = distance +...
8 return...
On donne ci-dessous deux exemples d'appels à cette fonction:
>>> entrainement1 = ['Verneys', 'Chateau enneigé', 'Rois mages', 'Diablotin']
>>> semi_marathon(entrainement1)
True
>>> entrainement2 = ['Esseillon', 'Aigle Royal', 'Duvallon']
>>> semi_marathon(entrainement2)
False
6. Recopier et compléter la fonction semi_marathon.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Lister les attributs de la classe Piste en précisant leur type.
Réponse : - `nom` : chaîne de caractères (`str`) - `denivele` : entier (`int`) - `longueur` : flottant ou entier (`float` / `int`) - `couleur` : chaîne de caractères (`str`) - `ouverte` : booléen (`bool`)
2. Écrire la méthode set_couleur de la classe Piste qui permet d'affecter à l'attribut couleur la chaîne de caractères correspondant à la couleur de la piste.
Réponse : ```python def set_couleur(self): if self.denivele >= 100: self.couleur = 'noire' elif self.denivele >= 70: self.couleur = 'rouge' elif self.denivele >= 40: self.couleur = 'bleue' else: self.couleur = 'verte' ```
3. Indiquer, parmi les 4 propositions ci-dessous, le type de l'élément renvoyé par l'instruction Python lievre_blanc.get_pistes().
Réponse : Proposition D : une liste d'objets de type Piste.
Les réponses des 3 questions restantes et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
‹ Exercice 2 - Partie A · Métropole 2024 (sujet 2) · Exercice 3 · Métropole 2023 (sujet 1) ›
Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes
- Exercice 1 - Programmation orientée objet · Métropole 2026 (sujet 2)
- Exercice 2 - Programmation orientée objet · Métropole 2025 (sujet 1)
- Exercice 2 - Partie C · Métropole 2 remplacement 2025
- Exercice 3 - Programmation orientée objet · Métropole 2024 (sujet 1)
- Exercice 2 - Partie A · Métropole 2024 (sujet 2)
- Exercice 3 · Métropole 2023 (sujet 1)
- Exercice 5 · Métropole 2022 (sujet 1)
- Exercice 2 - POO · Métropole 1 remplacement 2022
- Exercice 5 - Questions 1 à 4 : Programmation orie… · Métropole 2022 (sujet 2)
- Exercice 4 · Métropole 1 remplacement 2021