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_faces
etdernier_lancer
.L'attribut
dernier_lancer
aura 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
lancer
de 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_lancer
correspondant ; -
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 lorsqued
est 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
d1
etd2
font référence au même objet.