Exercices
Crédits⚓︎
Les exercices 1 à 6 compris ont été créés par Gilles Lassus et publiés sous licence cc nc-by-sa
Exercice 1
- Écrire une classe
Elevequi contiendra les attributsnom,classeetnote. - Instancier trois élèves de cette classe.
- Écrire une fonction
compare(eleve1, eleve2)qui renvoie le nom de l'élève ayant la meilleure note.
Exemple d'utilisation de la classe
Exercice 2
Écrire une classe TriangleRect qui contiendra les attributs cote1, cote2 et hypotenuse.
La méthode constructeur ne prendra en paramètres que cote1 et cote2, l'attribut hypotenuse se calculera automatiquement.
⚠️ Attention, hypotenuse n'est pas une méthode.
Exemple d'utilisation de la classe
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 3
- Écrire une classe
Chronoqui contiendra les attributsheures,minutesetsecondes. - Doter la classe d'une méthode
affiche()qui fera affichera le tempst. - Doter la classe d'une méthode
avance(s)qui fera avancer le tempstdessecondes.
Exemple d'utilisation de la classe
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 4
Écrire une classe Player qui :
- ne prendra aucun argument lors de son instanciation.
- affectera à chaque objet créé un attribut
energievalant 3 par défaut. - affectera à chaque objet créé un attribut
alivevalantTruepar défaut. - fournira à chaque objet une méthode
blessure()qui diminue l'attributenergiede 1. - fournira à chaque objet une méthode
soin()qui augmente l'attributenergiede 1. - si l'attribut
energiepasse à 0, l'attributalivedoit passer àFalseet ne doit plus pouvoir évoluer.
Exemple d'utilisation de la classe
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 5
Créer une classe CompteBancaire dont la méthode constructeur recevra en paramètres :
- un attribut
titulairestockant le nom du propriétaire. - un attribut
soldecontenant le solde disponible sur le compte.
Cette classe contiendra deux méthodes retrait() et depot() qui permettront de retirer ou de déposer de l'argent sur le compte.
Exemple d'utilisation de la classe
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 6 : Une bibliothèque
👉 Gestion d'une bibliothèque
Il s'agit de gérer les livres d'une bibliothèque, à l'aide de deux classes, la classe Livre et la classe Bibliotheque.
Le cahier des charges ci-dessous comporte la description des deux classes, ainsi qu'un exemple concret de leur utilisation.
👉 classe Livre
Elle comporte 3 attributs :
titre: le titre du livreauteur: le nom de l'auteuretat: un nombre entier entre 0 et 5. Si l'état vaut 0, le livre est trop abîmé et doit être retiré de la bibliothèque. L'état d'un livre ne peut pas être négatif.
Elle comporte 2 méthodes :
- degrade : enlève 1 à l'état du livre.
- description : affiche les renseignements sur le livre
👉 classe Bibliotheque
Elle comporte 1 attribut :
- livres : une liste (vide à la création de l'objet)
Elle comporte 3 méthodes :
ajoute: prend un livre en paramètre et l'ajoute à la bibliothèque.supprime_livres_abimes: enlève de la bibliothèque les livres trop abîmés.inventaire: affiche le contenu de la bibliothèque
👉 Exemple d'utilisation des classes
>>> ma_bibli = Bibliotheque()
>>> livre1 = Livre("Les Misérables", "Victor Hugo", 3)
>>> livre2 = Livre("Les fleurs du mal", "Charles Baudelaire", 1)
>>> ma_bibli.ajoute(livre1)
>>> ma_bibli.ajoute(livre2)
>>> livre1.description()
Titre : Les Misérables
Auteur : Victor Hugo
Etat : 3
>>> livre2.degrade()
>>> livre2.description()
Titre : Les fleurs du mal
Auteur : Charles Baudelaire
Etat : 0
>>> ma_bibli.inventaire()
-------------------------------
contenu de ma bibliothèque :
-------------------------------
Titre : Les Misérables
Auteur : Victor Hugo
Etat : 3
Titre : Les fleurs du mal
Auteur : Charles Baudelaire
Etat : 0
>>> ma_bibli.supprime_livres_abimes()
>>> ma_bibli.inventaire()
-------------------------------
contenu de ma bibliothèque :
-------------------------------
Titre : Les Misérables
Auteur : Victor Hugo
Etat : 3
Question
Proposer un code pour la classe Livre et la classe Bibliotheque répondant au cahier des charges.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 7 : Un jeu de carte
Exercice 8 : exercice "papier" - Les comptes
Créez une classe Compte. Un objet de type Compte devra posséder 4 attributs :
- solde : float : le solde du compte - lors de la création du compte le solde sera 0
- nom: str: le nom du titulaire du compte
- prenom: str: le prénom du titulaire du compte
- num_compte: int : un entier identifiant du compte
Les 3 derniers paramètres devront être définis lors de l'instanciation d'un compte.
Ajoutez des méthodes :
- une méthode str qui permettra l'affichage du compte avec
print(). La méthode doit renvoyer une chaine de caractères comme :
Nom : DURAND
Prénom : Jacques
Solde : 200
👉 pour insérer des retours à la ligne dans une chaîne on ajoute le caractère "\n"
-
une méthode
ajouterqui permettra de verser de l'argent sur le compte -
une méthode
debiterqui permettra de retirer de l'argent du compte.
La méthodedébiterdoit effectuer le retrait si le solde est suffisant (supérieur au montant qu'on souhaite retirer). Sinon elle doit afficher un message et ne pas effectuer le débit. -
une méthode
get_soldequi renvoie le solde du compte.
Enfin, vous ajouterez dans votre code les instructions pour créer un compte, verser de l'argent puis effectuer un débit.
Solution
class Compte:
def __init__(self, nom ,prenom, numero ) -> None:
"""
params : nom: str; prenom: str; numero: int (numéro de compte)
Le constructeur initialise les attributs, solde est initialisé à 0
"""
self.solde = 0
self.nom = nom
self.prenom = prenom
self.num_compte = numero
def __str__(self) -> str :
"""
param : self : un objet de type compte
sortie : la fonction renvoie une chaîne de caractère. __str__ est utilisée par print()
"""
return "Nom : "+self.nom+"\nPrénom : "+self.prenom+"\nSolde : "+str(self.solde)
def ajouter(self, montant: float) -> None:
self.solde = self.solde + montant
def debiter(self, montant:float) -> None:
if self.solde >= montant :
self.solde = self.solde - montant
else:
print( 'solde insuffisant' )
def get_solde(self) -> float:
return self.solde
mon_compte = Compte('Durand', 'Jacques', 13215)
mon_compte.ajouter(200)
mon_compte.debiter(20)
print(mon_compte)
print(mon_compte.solde)
Exercice 9 : Corrigez l'erreur - Les voitures
Le code suivant est faux. Vous devez le corriger.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Solution
Dans la méthode nom_puissance les variables nom et puissance ne sont pas définies.
Il faut utiliser des attributs.
Exercice 10: Coriger l'erreur
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)