Programme pile ou face

Résolu/Fermé
TristanKM Messages postés 2 Date d'inscription dimanche 30 mai 2021 Statut Membre Dernière intervention 30 mai 2021 - Modifié le 30 mai 2021 à 13:52
TristanKM Messages postés 2 Date d'inscription dimanche 30 mai 2021 Statut Membre Dernière intervention 30 mai 2021 - 30 mai 2021 à 15:56
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 :
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

jee pee Messages postés 39705 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 9 mai 2024 9 267
Modifié le 30 mai 2021 à 14:28
Bonjour,

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)


2