Exercice Corrigé: Les classes POO Python – Partie 6
Cet exercice de programmation orientée objet (POO) a pour but de vous aider à apprendre et à pratiquer les concepts de la POO. Toutes les questions sont testées sur Python 3.
Python La programmation orientée objet (POO) est basée sur le concept d’« objets », qui peuvent contenir des données et du code : des données sous la forme de variables d’instance (souvent connues sous le nom d’attributs ou de propriétés), et du code, sous la forme de méthodes. En d’autres termes, la POO permet d’encapsuler des propriétés et des comportements connexes dans des objets individuels.
Exercice 1:
Écrire un programme Python pour créer une classe appelée « Stock » avec une collection de produits et des méthodes pour ajouter et supprimer des produits, et pour vérifier si le stock est insuffisant.
Diagrame de classe:

# Définir la classe Produit class Produit: # Constructeur pour initialiser le nom et la quantité du produit def __init__(self, nom, quantite): # Affecter le paramètre nom au champ nom self.nom = nom # Affecter le paramètre quantite au champ quantite self.quantite = quantite # Méthode pour obtenir le nom du produit def get_nom(self): # Retourner la valeur du champ nom return self.nom # Méthode pour définir le champ nom def set_nom(self, nom): # Affecter le paramètre nom au champ nom self.nom = nom # Méthode pour obtenir la quantité du produit def get_quantite(self): # Retourner la valeur du champ quantite return self.quantite # Méthode pour définir le champ quantite def set_quantite(self, quantite): # Affecter le paramètre quantite au champ quantite self.quantite = quantite # Définir la classe Stock class Stock: # Constructeur pour initialiser la liste des produits def __init__(self): # Créer une liste vide pour stocker les objets Produit self.produits = [] # Méthode pour ajouter un produit à la liste des produits def add_produit(self, produit): # Ajouter le produit spécifié à la liste des produits self.produits.append(produit) # Méthode pour supprimer un produit de la liste des produits def remove_produit(self, produit): # Supprimer le produit spécifié de la liste des produits self.produits.remove(produit) # Méthode pour vérifier si les produits en stock sont # insuffisants def check_stock(self): # Itérer dans la liste des produits for p in self.produits: # Vérifier si la quantité du produit est inférieure ou # égale à 100 if p.get_quantite() <= 100: # Afficher un message indiquant que le produit est en # rupture de stock print(f"{p.get_nom()} est en rupture de stock. La quantité actuelle: {p.get_quantite()}") # Définir la fonction principale def main(): # Créer une nouvelle instance de la classe Stock stock = Stock() # Créer de nouveaux objets Produit avec nom et quantité p1 = Produit("Souris", 300) p2 = Produit("Clavier", 70) p3 = Produit("Tablette", 40) print("Ajouter trois produits en stock:") stock.add_produit(p1) stock.add_produit(p2) stock.add_produit(p3) print("\nVérifier la disponibilité des stocks:") # Vérifier et afficher les produits dont le stock est insuffisant stock.check_stock() print("\nSupprimer la tablette du stock!") # Supprimer le produit Tablette du stock stock.remove_produit(p3) print("\nVérifier à nouveau la disponibilité des stocks:") # Vérifier et afficher les produits dont le stock est insuffisant stock.check_stock() # Point d'entrée du programme if __name__ == "__main__": main()
Sortie:
Ajouter trois produits en stock: Vérifier la disponibilité des stocks: Clavier est en rupture de stock. La quantité actuelle: 70 Tablette est en rupture de stock. La quantité actuelle: 40 Supprimer la tablette du stock! Vérifier à nouveau la disponibilité des stocks: Clavier est en rupture de stock. La quantité actuelle: 70
Exercice 2:
Écrivez un programme Python pour créer une classe appelée « Ecole » avec des attributs pour les étudiants, les enseignants et les classes, et des méthodes pour ajouter et supprimer des étudiants et des enseignants, et pour créer des classes (cours).
Diagrame de classe:

# Importer les types nécessaires from typing import List # Définir la classe Etudiant class Etudiant: # Constructeur pour initialiser le nom et l'âge de l'étudiant def __init__(self, nom: str, age: int): self.nom = nom # Champ pour stocker le nom self.age = age # Champ pour stocker l'âge # Méthode Getter pour le champ nom def get_nom(self) -> str: return self.nom # Méthode Setter pour le champ nom def set_nom(self, nom: str): self.nom = nom # Méthode Getter pour le champ age def get_age(self) -> int: return self.age # Méthode Setter pour le champ age def set_age(self, age: int): self.age = age # Définir la classe Enseignant class Enseignant: # Constructeur pour initialiser le nom et la matière def __init__(self, nom: str, matiere: str): self.nom = nom # Champ pour stocker le nom self.matiere = matiere # Champ pour stocker la matière # Méthode Getter pour le champ nom def get_nom(self) -> str: return self.nom # Méthode Setter pour le champ nom def set_nom(self, nom: str): self.nom = nom # Méthode Getter pour le champ matiere def get_matiere(self) -> str: return self.matiere # Méthode Setter pour le champ matiere def set_matiere(self, matiere: str): self.matiere = matiere # Définir la classe Classe class Classe: # Constructeur pour initialiser les champs nomClasse, enseignant # et etudiants def __init__(self, nom_classe: str, enseignant: Enseignant): # Champ pour stocker le nom de la classe self.nom_classe = nom_classe # Champ pour stocker l'enseignant self.enseignant = enseignant # Liste d'étudiants self.etudiants: List[Etudiant] = [] # Méthode Getter pour le champ nomClasse def get_nom_classe(self) -> str: return self.nom_classe # Méthode Setter pour le champ nomClasse def set_nom_classe(self, nom_classe: str): self.nom_classe = nom_classe # Méthode Getter pour le champ enseignant def get_enseignant(self) -> Enseignant: return self.enseignant # Méthode Setter pour le champ enseignant def set_enseignant(self, enseignant: Enseignant): self.enseignant = enseignant # Méthode pour récupérer la liste des étudiants def get_etudiants(self) -> List[Etudiant]: return self.etudiants # Méthode pour ajouter un étudiant à la liste def add_etudiant(self, e: Etudiant): self.etudiants.append(e) # Méthode pour supprimer un étudiant de la liste def remove_etudiant(self, e: Etudiant): self.etudiants.remove(e) # Définir la classe Ecole class Ecole: # Constructeur pour initialiser les champs élèves, enseignants et # classes def __init__(self): # Liste d'étudiants self.etudiants: List[Etudiant] = [] # Liste d'enseignants self.enseignants: List[Enseignant] = [] # Liste de classes self.classes: List[Classe] = [] # Méthode pour ajouter un étudiant def add_etudiant(self, student: Etudiant): self.etudiants.append(student) # Méthode pour supprimer un étudiant def remove_etudiant(self, student: Etudiant): self.etudiants.remove(student) # Méthode pour ajouter un enseignant def add_enseignant(self, teacher: Enseignant): self.enseignants.append(teacher) # Méthode pour supprimer un enseignant def remove_enseignant(self, teacher: Enseignant): self.enseignants.remove(teacher) # Méthode pour ajouter une classe def add_classe(self, school_class: Classe): self.classes.append(school_class) # Méthode pour supprimer une classe def remove_classe(self, school_class: Classe): self.classes.remove(school_class) # Méthode pour récupérer la liste des étudiants def get_etudiants(self) -> List[Etudiant]: return self.etudiants # Méthode pour récupérer la liste des enseignants def get_enseignants(self) -> List[Enseignant]: return self.enseignants # Méthode pour récupérer la liste des classes def get_classes(self) -> List[Classe]: return self.classes # Classe principale pour exécuter le programme if __name__ == "__main__": # Créer une nouvelle instance de la classe Ecole ecole = Ecole() # Créer des objets Etudiant avec nom et âge et1 = Etudiant("Alex Babtise", 20) et2 = Etudiant("Bob Firok", 25) et3 = Etudiant("Emily Taylor", 22) et4 = Etudiant("Ali Binani", 23) # Ajouter les étudiants à l'école ecole.add_etudiant(et1) ecole.add_etudiant(et2) ecole.add_etudiant(et3) ecole.add_etudiant(et4) # Créer de nouveaux objets Enseignant avec nom et matière es1 = Enseignant("Yohan Sinor", "Math") es2 = Enseignant("Thomas Fiza", "Anglais") es3 = Enseignant("Olivier Bibo", "Science") # Ajouter les enseignants à l'école ecole.add_enseignant(es1) ecole.add_enseignant(es2) ecole.add_enseignant(es3) # Créer de nouveaux objets Classe class_math = Classe("Mathematics", es1) class_math.add_etudiant(et1) class_math.add_etudiant(et2) class_math.add_etudiant(et3) class_math.add_etudiant(et4) class_anglais = Classe("Anglais", es2) class_anglais.add_etudiant(et1) class_anglais.add_etudiant(et2) class_anglais.add_etudiant(et3) class_science = Classe("Science", es3) class_science.add_etudiant(et1) class_science.add_etudiant(et2) class_science.add_etudiant(et3) class_science.add_etudiant(et4) # Ajouter les classes à l'école ecole.add_classe(class_math) ecole.add_classe(class_anglais) ecole.add_classe(class_science) # Afficher des informations générales sur l'école print("Informations sur l'école:") print("Nombre d'étudiants:", len(ecole.get_etudiants())) print("Nombre d'enseignants:", len(ecole.get_enseignants())) print("Nombre de classes:", len(ecole.get_classes())) print() # Afficher les informations sur les cours for school_class in ecole.get_classes(): print(f"Informations sur les cours de {school_class.get_nom_classe()}:") print("Nom de la classe:", school_class.get_nom_classe()) print("Enseignant:", school_class.get_enseignant().get_nom()) print("Nombre d'étudiants:", len(school_class.get_etudiants())) print() # Supprimer un élève, un enseignant et une classe de l'école ecole.remove_etudiant(et1) ecole.remove_enseignant(es2) ecole.remove_classe(class_math) # Afficher les informations mises à jour sur l'école print("Informations sur l'école après suppression d'un élève, d'un enseignant et d'une classe:") print("Nombre d'étudiants:", len(ecole.get_etudiants())) print("Nombre d'enseignants:", len(ecole.get_enseignants())) print("Nombre de classes:", len(ecole.get_classes()))
Sortie:
Informations sur l'école: Nombre d'étudiants: 4 Nombre d'enseignants: 3 Nombre de classes: 3 Informations sur les cours de mathématiques: Nom de Class: Mathematics Enseignant: Yohan Sinor Nombre d'étudiants: 4 Informations sur les cours d'anglais: Nom de Class: Anglais Enseignant: Thomas Fiza Nombre d'étudiants: 3 Informations sur les cours de sciences: Nom de Class: Science Enseignant: Olivier Bibo Nombre d'étudiants: 4 Informations sur l'école après suppression d'un élève, d'un enseignant et d'une classe: Nombre d'étudiants: 3 Nombre d'enseignants: 2 Nombre de classes: 2
Exercice 3:
Écrire un programme Python pour créer une classe appelée « BiblioMusicale » avec une collection de chansons et des méthodes pour ajouter et supprimer des chansons, et pour jouer une chanson au hasard.
Diagrame de classe:

import random # Importer le module random # Définir la classe Chanson class Chanson: # Constructeur pour la classe Chanson def __init__(self, title, artist): # Initialiser le champ titre et artiste self.title = title self.artist = artist # Méthode Getter pour récupérer le titre de la chanson def get_titre(self): return self.title # Méthode pour modifier le titre de la chanson def set_titre(self, title): self.title = title # Méthode Getter pour récupérer l'artiste de la chanson def get_artist(self): return self.artist # Méthode pour modifier le nom de l'artiste de la chanson def set_artist(self, artist): self.artist = artist # Définir la classe BiblioMusicale class BiblioMusicale: # Constructeur pour la classe BiblioMusicale def __init__(self): # Créer une nouvelle liste pour stocker les objets Chanson self.chansons = [] # Méthode pour ajouter une chanson à la bibliothèque def add_chanson(self, song): # Ajouter la chanson fournie à la liste des chansons self.chansons.append(song) # Méthode pour supprimer une chanson de la bibliothèque def remove_chanson(self, song): # Supprimer la chanson fournie de la liste des chansons self.chansons.remove(song) # Méthode pour obtenir la liste de toutes les chansons def get_chanson(self): return self.chansons # Méthode pour lire une chanson aléatoire de la bibliothèque def lire_chanson_aleatoire(self): # Vérifier si la bibliothèque est vide if not self.chansons: print("Il n'y a pas de chansons à lire.") return # Quitter la méthode # Générer un index aléatoire dans l'intervalle de la liste # des chansons index = random.randint(0, len(self.chansons) - 1) # Afficher le titre et l'artiste de la chanson sélectionnée print(f"Lire: {self.chansons[index].get_titre()} par {self.chansons[index].get_artist()}") # Définir la classe Main if __name__ == "__main__": # Créer une nouvelle instance de la classe BiblioMusicale biblio = BiblioMusicale() # Ajouter des chansons à la bibliothèque musicale biblio.add_chanson(Chanson("Un clair de lune", "Jean Chérasse")) biblio.add_chanson(Chanson("Cadet Rousselle", "André Hunebelle")) biblio.add_chanson(Chanson("Help!", "Richard Lester")) biblio.add_chanson(Chanson("Baisers volés", "François Truffaut")) biblio.add_chanson(Chanson("Je t'aime", "Serge Gainsbourg")) biblio.add_chanson(Chanson("Staying Alive", "Michel Blanc")) # Afficher toutes les chansons de la bibliothèque musicale print("Toutes les chansons:") for chanson in biblio.get_chanson(): print(f"{chanson.get_titre()} par {chanson.get_artist()}") print("\nLecture d'une chanson aléatoire:") # Lire et afficher trois fois une chanson choisie au hasard dans # la bibliothèque biblio.lire_chanson_aleatoire() print() biblio.lire_chanson_aleatoire() print() biblio.lire_chanson_aleatoire()
Sortie:
Toutes les chansons: Un clair de lune par Jean Chérasse Cadet Rousselle par André Hunebelle Help! par Richard Lester Baisers volés par François Truffaut Je t'aime par Serge Gainsbourg Staying Alive par Michel Blanc Lecture d'une chanson aléatoire: Lire: Help! par Richard Lester Lire: Baisers volés par François Truffaut Lire: Help! par Richard Lester
Exercice 4:
Écrivez un programme Python pour créer une classe appelée 'Forme' avec des méthodes abstraites pour calculer la surface et le périmètre, et des sous-classes pour le 'Rectangle', le 'Cercle' et le 'Triangle'.
Diagrame de classe:

from abc import ABC, abstractmethod import math # Définir la classe Forme comme une classe abstraite class Forme(ABC): # Méthode abstraite pour récupérer la surface de la forme @abstractmethod def get_surface(self): pass # Méthode abstraite pour récupérer le périmètre de la forme @abstractmethod def get_perimeter(self): pass # Définir la classe Rectangle, qui hérite de la classe Forme class Rectangle(Forme): # Constructeur pour initialiser la longueur et la largeur du # rectangle def __init__(self, longueur, largeur): self.longueur = longueur # Attribuer la longueur self.largeur = largeur # Attribuer la largeur # Méthode pour calculer et renvoyer la surface du rectangle def get_surface(self): # Surface = longueur * largeur return self.longueur * self.largeur # Méthode pour calculer et renvoyer le périmètre du rectangle def get_perimeter(self): # Périmètre = 2 * (longueur + largeur) return 2 * (self.longueur + self.largeur) # Définir la classe Cercle, qui hérite de la classe Forme class Cercle(Forme): # Constructeur pour initialiser le rayon du cercle def __init__(self, rayon): self.rayon = rayon # Attribuer le rayon # Méthode pour calculer et renvoyer la surface du cercle def get_surface(self): return math.pi * self.rayon ** 2 # Surface = π * rayon^2 # Méthode pour calculer et renvoyer le périmètre du cercle def get_perimeter(self): return 2 * math.pi * self.rayon # Périmètre = 2 * π * rayon # Définir la classe Triangle, qui hérite de la classe Forme class Triangle(Forme): # Constructeur pour initialiser les côtés du triangle def __init__(self, c1, c2, c3): self.c1 = c1 self.c2 = c2 self.c3 = c3 # Méthode pour calculer et renvoyer la surface du triangle def get_surface(self): # Calculer le semi-périmètre s = (self.c1 + self.c2 + self.c3) / 2 # Formule de Heron return math.sqrt(s * (s - self.c1) * (s - self.c2) * (s - self.c3)) # Méthode pour calculer et renvoyer le périmètre du triangle def get_perimeter(self): # Périmètre = somme des côtés return self.c1 + self.c2 + self.c3 # Définir la classe Main if __name__ == "__main__": # Créer un rectangle de longueur 15 et de largeur 20 rectangle = Rectangle(15, 20) # Créer un cercle de rayon 5 circle = Cercle(5) # Créer un triangle dont les côtés sont 5, 7 et 9 triangle = Triangle(5, 7, 9) print("\nSurface et périmètre de différentes formes:") # Afficher les détails et calculs du rectangle print("\nRectangle:") print("Surface:", rectangle.get_surface()) print("Périmètre:", rectangle.get_perimeter()) # Afficher les détails et calculs du cercle print("\nCercle:") print("Surface:", circle.get_surface()) print("Périmètre:", circle.get_perimeter()) # Afficher les détails et calculs du triangle print("\nTriangle:") print("Surface:", triangle.get_surface()) print("Périmètre:", triangle.get_perimeter())
Sortie:
Surface et périmètre de différentes formes: Rectangle: Surface: 300.0 Périmètre: 70.0 Cercle: Surface: 78.53981633974483 Périmètre: 31.41592653589793 Triangle: Surface: 17.41228014936585 Périmètre: 21.0
Exercice 5:
Écrire un programme Python pour créer une classe appelée « Film » avec des attributs pour le titre, le directeur, les acteurs et les avis, et des méthodes pour ajouter et récupérer des avis.
Diagrame de classe:

from typing import List # Définir la classe Avis class Avis: # Constructeur pour initialiser le texte de l'avis, le nom de # l'avis et la note def __init__(self, text_avis: str, nom_avis: str, note: float): self.text_avis = text_avis # Initialiser le texte de l'avis self.nom_avis = nom_avis # Initialiser le nom de l'avis self.note = note # Initialiser la note # Méthode pour récupérer le texte de l'avis def get_text_avis(self) -> str: return self.text_avis # Retourner le texte de l'avis # Méthode pour récupérer le nom de l'avis def get_nom_avis(self) -> str: return self.nom_avis # Retourner le nom de l'avis # Méthode pour récupérer la note def get_note(self) -> float: return self.note # Retourner la note # Définir la classe Film class Film: # Constructeur pour initialiser le titre, le directeur et les # acteurs du film def __init__(self, titre: str, directeur: str, acteurs: List[str]): self.titre = titre # Initialiser le titre self.directeur = directeur # Initialiser le directeur self.acteurs = acteurs # Initialiser la liste des acteurs self.avis = [] # Initialiser la liste des avis # Méthode pour ajouter un avis sur le film def add_avis(self, a: Avis): self.avis.append(a) # Ajouter l'avis à la liste # Méthode pour récupérer la liste de toutes les avis du film def get_avis(self) -> List[Avis]: return self.avis # Retourner la liste des avis # Méthode pour récupérer le titre du film def get_titre(self) -> str: return self.titre # Retourner le titre # Méthode pour récupérer le directeur du film def get_directeur(self) -> str: return self.directeur # Retourner le directeur # Méthode pour récupérer la liste des acteurs d'un film def get_acteurs(self) -> List[str]: return self.acteurs # Retourner la liste des acteurs # Définir la classe Main if __name__ == "__main__": # Créer un objet film f1 = Film("La Roue", "Jean Servais", ["Pierre Pelletier", "Pierre Mondy"]) # Créer des objets d'avis avis1 = Avis("Excellent film!", "Alex Babtise", 5.0) avis2 = Avis("Fortement recommandé!", "Jean Zino", 4.5) avis3 = Avis("Un film magnifique", "Bob Polib", 4.0) # Ajouter des avis sur f1 f1.add_avis(avis1) f1.add_avis(avis2) f1.add_avis(avis3) # Afficher tous les avis sur 'La Roue' print(f"\nAvis pour '{f1.get_titre()}':") for a in f1.get_avis(): print(f"{a.get_text_avis()} par {a.get_nom_avis()} - {a.get_note()}")
Sortie:
Avis pour 'La Roue': Excellent film! par Alex Babtise - 5.0 Fortement recommandé! par Jean Zino - 4.5 Un film magnifique par Bob Polib - 4.0
Éditeur de code Python: Testez votre code en ligne!
Exercice Corrigé: Les classes POO Python - Partie 2
Exercice Corrigé: Les classes POO Python - Partie 3
Exercice Corrigé: Les classes POO Python - Partie 4
Exercice Corrigé: Les classes POO Python - Partie 5
Exercice Corrigé: Les classes POO Python - Partie 6
Exercice Corrigé: Les classes POO Python - Partie 7
Exercice Corrigé: Les classes POO Python - Partie 8
Exercice Corrigé: Les classes POO Python - Partie 9

- Exercice Corrigé Python pour Débutant – Partie 1
- Exercice Corrigé Python pour Débutant – Partie 2
- Exercice Corrigé Python pour Débutant – Partie 3
- Exercice Corrigé Python pour Débutant – Partie 4
- Exercice Corrigé: Boucle While en Python
- Exercice Corrigé: Boucle For en Python
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 1
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 2
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 3
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 4
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 5
- Exercice Corrigé: Les chaînes de caractères en Python – Partie 6
- Exercice Corrigé: Booléens en Python
- Exercice Corrigé: Les fonctions en Python
- Exercice Corrigé: Math en Python
- Exercice Corrigé: Gestion des exceptions en Python
- Exercice Corrigé: Les fichiers en Python – Partie 1
- Exercice Corrigé: Les fichiers en Python – Partie 2
- Exercice Corrigé: Les listes en Python – Partie 1
- Exercice Corrigé: Les listes en Python – Partie 2
- Exercice Corrigé: Les listes en Python – Partie 3
- Exercice Corrigé: Les listes en Python – Partie 4
- Exercice Corrigé: Les listes en Python – Partie 5
- Exercice Corrigé: Les listes en Python – Partie 6
- Exercice Corrigé: Les listes en Python – Partie 7
- Exercice Corrigé: Les listes en Python – Partie 8
- Exercice Corrigé: Les listes en Python – Partie 9
- Exercice Corrigé: Les listes en Python – Partie 10
- Exercice Corrigé: Les listes en Python – Partie 11
- Exercice Corrigé: Les listes en Python – Partie 12
- Exercice Corrigé: Les tuples en Python
- Exercice Corrigé: Les ensembles(Set) en Python
- Exercice Corrigé: Les dictionnaires en Python – Partie 1
- Exercice Corrigé: Les dictionnaires en Python – Partie 2
- Exercice Corrigé: Les dictionnaires en Python – Partie 3
- Exercice Corrigé: Les dictionnaires en Python – Partie 4
- Exercice Corrigé: Les expressions régulières en Python – Partie 1
- Exercice Corrigé: Les expressions régulières en Python – Partie 2
- Exercice Corrigé: Les expressions régulières en Python – Partie 3
- Exercice Corrigé: Les expressions régulières en Python – Partie 4
- Exercice Corrigé: Les classes POO Python – Partie 1
- Exercice Corrigé: Les classes POO Python – Partie 2
- Exercice Corrigé: Les classes POO Python – Partie 3
- Exercice Corrigé: Les classes POO Python – Partie 4
- Exercice Corrigé: Les classes POO Python – Partie 5
- Exercice Corrigé: Les classes POO Python – Partie 6
- Exercice Corrigé: Les classes POO Python – Partie 7
- Exercice Corrigé: Les classes POO Python – Partie 8
- Exercice Corrigé: Les classes POO Python – Partie 9
- Exercice Corrigé: NumPy – Partie 1
- Exercice Corrigé: NumPy – Partie 2
- Exercice Corrigé: NumPy – Partie 3
- Exercice Corrigé: NumPy – Partie 4
- Exercice Corrigé: NumPy – Partie 5
- Exercice Corrigé: NumPy – Partie 6
- Exercice Corrigé: NumPy – Partie 7
- Exercice Corrigé: NumPy – Partie 8
- Exercice Corrigé: Python Avancé – Partie 1
- Exercice Corrigé: Python Avancé – Partie 2
- Exercice Corrigé: Python Avancé – Partie 3
- Exercice Corrigé: Python Avancé – Partie 4
- Exercice Python Corrigé En Ligne – Partie 1
- Exercice Python Corrigé En Ligne – Partie 2
- Exercice Python Corrigé En Ligne – Partie 3