Rappels, POO
Compléter l'encadré avec le code python répondant aux questions de l'énoncé. On rappelle que la fonction randint du module random prend en entrée deux nombres a et b et renvoie un nombre aléatoire \(N\) avec \(a \leq N \leq b\).
-
Définir une classe
Dépossédant les attributsnb_facesetdernier_lancer.L'attribut
dernier_lanceraura comme valeur par défaut0.1 2 3 4 5
from random import randint class Dé: def __init__(self, nb_faces): self.nb_faces = nb_faces self.dernier_lancer = 0 -
Écrire une méthode
lancerde la classeDéqui simule un lancer de dé ànb_faces:-
elle génère un nombre aléatoire compris entre 1 et
nb_faces; -
modifie l'attribut
dernier_lancercorrespondant ; -
renvoie la valeur générée.
1 2 3 4 5
def lancer(self): """ Dé -> int """ N = randint(1, self.nb_faces) self.dernier_lancer = N return N
-
-
Écrire une méthode
__str__de la classeDéde telle sorte que lorsquedest une variable de typeDél'instructionprint(d)affiche l'attributdernier_lancer:1 2
def __str__(self): return f"Le résultat du dé est {self.dernier_lancer}." -
Écrire un code python permettant de représenter un dé à 20 faces, de simuler un lancer, puis d'afficher le résultat du lancer.
1 2 3
d = Dé(6) d.lancer() print(d)Le résultat du dé est 3. -
Un programmeur maladroit cherche à simuler le lancer de deux dés à 6 faces. Il écrit le code suivant :
1 2 3 4 5
d1 = Dé(6) d2 = d1 d1.lancer() # on suppose : renvoie 4 d2.lancer() # on suppose : renvoie 2 print(d1.dernier_lancer, d2.dernier_lancer)Pouvez-vous expliquer son erreur à l'aide d'un schéma ?
Les deux variables
d1etd2font référence au même objet.