Exercice 2 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Amérique du Nord 2025 (jour 1)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 1 (2025)
Énoncé
Cet exercice porte sur la programmation orientée objet, la récursivité et les algorithmes gloutons.
Une entreprise souhaite gérer les colis qu'elle expédie à l'aide d'une application informatique. On sait que chaque colis a un identifiant unique, un poids, une adresse de livraison et un état. Pour chacun d'entre eux, trois états sont possibles: « préparé », « transit » ou « livré ».
Pour cela, on a créé une classe Colis avec les attributs suivants:
id: un identifiant unique (de type str);
poids: le poids du colis en kilogrammes (de type float);
adresse: l'adresse de destination (de type str);
etat: l'état du colis (de type str parmi 'préparé', 'transit', 'livré').
Lorsque l'on crée une instance de la classe Colis, l'attribut etat est initialisé à 'préparé' tandis que les valeurs des autres attributs sont passées en paramètres. Voici le début du code Python de la classe Colis:
class Colis:
def __init__(self, id, poids, adresse):
self.id = id
self.poids = poids
self.adresse = adresse
self.etat = 'préparé'
On crée, par exemple, les deux colis suivants:
colisA = Colis('AC12', 5.0, '20 rue de la paix 57000 Metz')
colisB = Colis('AF34', 10.25, '32 rue du centre 57000 Metz')
1.
Écrire la méthode passer_transit de la classe Colis qui permet de mettre l'état du colis à la valeur 'transit'.
On dispose de la fonction ajouter_colis suivante:
def ajouter_colis(liste, colis):
# ajoute le colis à la fin de la liste
liste.append(colis)
Par exemple, après l'exécution des trois instructions suivantes, on a ajouté les deux colis créés précédemment à la liste liste_colis:
liste_colis = []
ajouter_colis(liste_colis, colisA)
ajouter_colis(liste_colis, colisB)
2.
Dans cette question uniquement, on considère que l'acheminement des colis de plus de 25 kg est refusé par le transporteur.
Recopier et modifier le code de la fonction ajouter_colis afin qu'elle ajoute le colis à la liste si son poids est inférieur ou égal à 25 kg et qu'elle affiche le message "Dépassement du poids maximal autorisé" sinon.
3.
Écrire une fonction nb_colis qui prend en paramètre une liste d'objets de la classe Colis et qui renvoie le nombre de colis présents dans cette liste.
4.
Recopier et compléter les lignes 2 et 4 du code ci-après de la fonction poids_total qui prend en paramètre une liste d'objets de la classe Colis et qui renvoie le poids total de l'ensemble des colis de cette liste.
def poids_total(liste):
total =...
for c in liste:
total =...
return total
5.
Écrire une fonction liste_colis_etat qui prend en paramètres une liste d'objets de la classe Colis et une chaîne de caractères statut (parmi 'préparé', 'transit' ou 'livré') et qui renvoie une nouvelle liste contenant l'ensemble des colis de cette liste dont l'état est le même que statut.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Écrire la méthode passer_transit de la classe Colis qui permet de mettre l'état du colis à la valeur 'transit'.
Réponse : ```python def passer_transit(self): self.etat = 'transit' ```
2. Recopier et modifier le code de la fonction ajouter_colis afin qu'elle ajoute le colis à la liste si son poids est inférieur ou égal à 25 kg et qu'elle affiche le message "Dépassement du poids maximal autorisé" sinon.
Réponse : ```python def ajouter_colis(liste, colis): if colis.poids <= 25: liste.append(colis) else: print("Dépassement du poids maximal autorisé") ```
3. Écrire une fonction nb_colis qui prend en paramètre une liste d'objets de la classe Colis et qui renvoie le nombre de colis présents dans cette liste.
Réponse : ```python def nb_colis(liste): return len(liste) ```
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 - Programmation orientée objet · Amérique du Nord 2026 (jour 2) · Exercice 2 - Programmation orientée objet · Amérique du Nord 2025 (jour 2) ›
Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes
- Exercice 1 - Partie A · Amérique du Nord 2026 (jour 1)
- Exercice 2 - Questions 9 à 11 · Amérique du Nord 2026 (jour 1)
- Exercice 2 - Programmation orientée objet · Amérique du Nord 2026 (jour 2)
- Exercice 2 - Programmation orientée objet · Amérique du Nord 2025 (jour 2)
- Exercice 3 - Programmation orientée objet · Amérique du Nord 2024 (jour 2)
- Exercice 3 - Programmation orientée objet · Amérique du Nord 2023 (jour 1)
- Exercice 1 - Programmation orientée objet · Amérique du Nord 2022 (jour 2)