Programme pile ou face
Résolu
Bonjour,
J'aimerais faire un programme qui me permettrait de lancer 100 fois une pièce et que si la fréquence de pile ou de face est égale à 0.8 alors le programme s'arrête sinon il continue. J'aimerais aussi avoir le nombre de tentatives indiqué.
Merci beaucoup pour votre aide
Voici le bout de code que j'ai déjà fait :
J'aimerais faire un programme qui me permettrait de lancer 100 fois une pièce et que si la fréquence de pile ou de face est égale à 0.8 alors le programme s'arrête sinon il continue. J'aimerais aussi avoir le nombre de tentatives indiqué.
Merci beaucoup pour votre aide
Voici le bout de code que j'ai déjà fait :
from math import*
from random import*
def pile_face(a):
nb_pile = 0
nb_face = 0
while True:
for i in range(a):
piece = randint(0,1)
if piece == 1:
nb_pile = nb_pile + 1
else:
nb_face = nb_face + 1
if nb_face/a == 0.8:
break
print(pile_face(100))
4 réponses
-
ModérateurBonjour,
Pourquoi initialiser les compteurs dans une fonction ? Car il faut se rappeler qu'une variable définie dans une fonction ne sera pas visible en dehors. Suggestion de lecture, la portée des variables : https://www.pierre-giraud.com/python-apprendre-programmer-cours/portee-variable/
Ton code n'a pas de logique, il ne peut aboutir.
Pourquoi un while et un for, c'est ceinture et bretelles, un de trop.
Après tester strictement = à 0.8 sera difficile à atteindre. Un >= serait plus approprié. Et 80% peut être un objectif ambitieux. Mais attention si on démarre sur un face, cela s'arrête tout de suite : 100% de face sur 1 tirage ;-) L'énoncé est peut être à revoir.
A étudier :from random import* nb_pile = 0 nb_face = 0 max=int(input("Tentatives max : ")) for i in range(max): piece = randint(0,1) if piece == 1: nb_pile = nb_pile + 1 else: nb_face = nb_face + 1 if nb_face/(i+1) >= 0.6: print("Interruption en route !") break print("Tentatives",i+1,"- Pile",nb_pile,"- Face",nb_face)