Informatique

Question

Bonjour ! Merci d'avance pour l'aide qui me sera apporté :)
Ce programme python (intégralement réalisé par moi je suis fier) a un problème : sue 12 lancé, il n'y a que 8 qui sont retranscrit dans les résultats.
Merci pour l'aide encore !

from random import *
N = int(input('Donnez un nombre de lancés'))
Face_1_du_de = 0
Face_2_du_de = 0
Face_3_du_de = 0
Face_4_du_de = 0
Face_5_du_de = 0
Face_6_du_de = 0
frequence_de_1 = 0
frequence_de_2 = 0
frequence_de_3 = 0
frequence_de_4 = 0
frequence_de_5 = 0
frequence_de_6 = 0


for i in range (N):
if randint(1,6) == 1:
Face_1_du_de = Face_1_du_de + 1
frequence_de_1 = Face_1_du_de/N
else:
if randint(1,6) == 2:
Face_2_du_de = Face_2_du_de + 1
frequence_de_2 = Face_2_du_de/N
else:
if randint(1,6) == 3:
Face_3_du_de = Face_3_du_de + 1
frequence_de_3 = Face_3_du_de
else:
if randint(1,6) == 4:
Face_4_du_de = Face_4_du_de + 1
frequence_de_4 = Face_4_du_de/N
else:
if randint(1,6) == 5:
Face_5_du_de = Face_5_du_de + 1
frequence_de_5 = Face_5_du_de/N
else:
if randint(1,6) == 6:
Face_6_du_de = Face_6_du_de + 1
frequence_de_6 = Face_6_du_de/N

print('Apres avoir lancé',N,'fois le de :')
print('On obtient',Face_1_du_de,'la face 1, et sa frequence est',frequence_de_1)
print('On obtient',Face_2_du_de,'la face 2, et sa frequence est',frequence_de_2)
print('On obtient',Face_3_du_de,'la face 3, et sa frequence est',frequence_de_3)
print('On obtient',Face_4_du_de,'la face 4, et sa frequence est',frequence_de_4)
print('On obtient',Face_5_du_de,'la face 5, et sa frequence est',frequence_de_5)
print('On obtient',Face_6_du_de,'la face 6, et sa frequence est',frequence_de_6)

1 Réponse

  • Réponse :

    Explications :

    Bonjour,

    votre problème c'est que  à chaque "i" il y a 6 valeurs aléatoires randint(1,6) différentes puisque vous écrivez un randint(1,6)  à chaque if !!

    Ce randint(1,6) étant d'ailleurs différent d'un "if" à l'autre !

    voir le programme modifié :

    avec ajout de " :" a la fin de l'input afin de mieux dégager la demande du nombre de lancer

    il manque " /N" a la fin de : frequence_de_3 = Face_3_du_de

    Remarque : dans votre affichage :

    Apres avoir lancé 12 fois le dé :

    On obtient 3 la face 1, et sa frequence est 0.25 : cette phrase n'est pas en bon français !!

    écrire : On obtient 3 tirage(s) de la face 1, et sa fréquence de tirage vaut 0.25

    un programme moins lourd avec des "elif" au lieur d'une succession de "else" et "if"

    les " print(i,j) " vous permettent de voir pour chaque valeur de "i" la valeur du tirage "j,"  les print(i,j) sont à effacer avant de rendre au prof.

    si nécessaire passez par les commentaires !!

    -------------------------

    from random import *

    N = int(input('Donnez un nombre de lancés :')) # ajout de  :

    Face_1_du_de = 0

    Face_2_du_de = 0

    Face_3_du_de = 0

    Face_4_du_de = 0

    Face_5_du_de = 0

    Face_6_du_de = 0

    frequence_de_1 = 0

    frequence_de_2 = 0

    frequence_de_3 = 0

    frequence_de_4 = 0

    frequence_de_5 = 0

    frequence_de_6 = 0

    j = 0

    for i in range (N):

       j = randint(1,6)

       if j == 1:

           Face_1_du_de = Face_1_du_de + 1

           frequence_de_1 = Face_1_du_de/N

           print(i,j)

       elif j == 2:

           Face_2_du_de = Face_2_du_de + 1

           frequence_de_2 = Face_2_du_de/N

           print(i,j)

       elif j == 3:

           Face_3_du_de = Face_3_du_de + 1

           frequence_de_3 = Face_3_du_de/N

           print(i,j)

       elif j == 4:

           Face_4_du_de = Face_4_du_de + 1

           frequence_de_4 = Face_4_du_de/N

           print(i,j)

       elif j == 5:

           Face_5_du_de = Face_5_du_de + 1

           frequence_de_5 = Face_5_du_de/N

           print(i,j)

       elif j == 6:

           Face_6_du_de = Face_6_du_de + 1

           frequence_de_6 = Face_6_du_de/N

           print(i,j)

    print('Apres avoir lancé',N,'fois le de :')

    print('On obtient',Face_1_du_de,'la face 1, et sa frequence est',frequence_de_1)

    print('On obtient',Face_2_du_de,'la face 2, et sa frequence est',frequence_de_2)

    print('On obtient',Face_3_du_de,'la face 3, et sa frequence est',frequence_de_3)

    print('On obtient',Face_4_du_de,'la face 4, et sa frequence est',frequence_de_4)

    print('On obtient',Face_5_du_de,'la face 5, et sa frequence est',frequence_de_5)

    print('On obtient',Face_6_du_de,'la face 6, et sa frequence est',frequence_de_6)

    Image en pièce jointe de la réponse Legrandu48

Autres questions