Classes, héritage (correction)¶
Correction.
Exercice 1 : pièce normale¶
[1]:
import random
class Piece:
def tirage_aleatoire(self, precedent):
return random.randint(0, 1)
def moyenne_tirage(self, n):
tirage = []
for i in range(n):
precedent = tirage[-1] if i > 0 else None
tirage.append(self.tirage_aleatoire(precedent))
s = sum(tirage)
return s * 1.0 / len(tirage)
p = Piece()
print(p.moyenne_tirage(100))
0.57
Exercice 2 : pièce truquée¶
[2]:
class PieceTruquee(Piece):
def tirage_aleatoire(self, precedent):
if precedent == None or precedent == 1:
return random.randint(0, 1)
else:
return 1 if random.randint(0, 9) >= 3 else 0
p = PieceTruquee()
print(p.moyenne_tirage(100))
0.59
Exercice 3 : Pièce mixte¶
[3]:
class PieceTruqueeMix(PieceTruquee):
def tirage_aleatoire(self, precedent):
if random.randint(0, 1) == 0:
return Piece.tirage_aleatoire(self, precedent)
else:
return PieceTruquee.tirage_aleatoire(self, precedent)
p = PieceTruqueeMix()
print(p.moyenne_tirage(100))
0.59
Exercice 4 : pièce mixte avec des fonctions¶
[4]:
# ce qui vient de l'énoncé
def moyenne_tirage(n, fonction):
"""
cette fonction fait la moyenne des résultats produits par la fonction passée en argument
"""
tirage = []
for i in range(n):
precedent = tirage[-1] if i > 0 else None
tirage.append(fonction(precedent))
s = sum(tirage)
return s * 1.0 / len(tirage)
def truquee(precedent):
if precedent == None or precedent == 1:
return random.randint(0, 1)
else:
return 1 if random.randint(0, 9) >= 3 else 0
# la partie ajoutée pour la correction
print(
moyenne_tirage(
100, lambda v: random.randint(0, 1) if random.randint(0, 1) == 0 else truquee(v)
)
)
0.6