lancer de dés
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

lancer de dés



  1. #1
    leon266

    lancer de dés


    ------

    Bonjour,
    j'ai un exercice à faire sur python. cependant, mon programme ne marche pas pouvez vous m'aider svp?
    Voici l'énoncé :

    écrire une fonctions toscane(n) qui simulera n lancers de trois dés, calculera la somme, comptera et affichera le nombre et le pourcentage des réalisations égales à 9 ainsi que le nombre et le pourcentage des réalisations égales à 10

    Voici ce que j'ai fait :

    import random
    n =int(input("valeur de n"))
    def toscane(n):
    for i in range(1,n):
    de1=random.randint(1,6)
    de2=random.randint(1,6)
    de3=random.randint(1,6)

    somme=de1+de2+de3
    print(somme)

    return (somme)
    print(toscane(n))

    somme9=0
    somme10=0
    if somme==9:
    somme9=somme9+1
    if somme==10:
    somme10=somme10+1

    print(somme9,somme10)

    pouvez vous me dire ce qui ne va pas dans mon programme svp ? merci d'avance

    -----

  2. #2
    danyvio

    Re : lancer de dés

    Je ne vois pas la fin des instructions commandées par le for i in range (1,n) ? Il manque peut-être quelque chose après de3= etc.
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  3. #3
    leon266

    Re : lancer de dés

    Oui c'est que je me suis dis aussi. cependant, je ne vois pas ou intégrer i dans la boucle.

  4. #4
    eudea-panjclinne

    Re : lancer de dés

    Dans la fonction toscane print() est parasite, cette fonction retourne le contenu de la variable somme il faut éviter de lui faire faire autre chose.
    D'autre part, as-tu respecté les indentations car ici sur le forum on ne les voit pas.

    Dans le programme principal somme ne contient rien puisque la variable somme de la fonction toscane est une variable locale à cette fonction:
    Au lieu d'écrire
    if somme==9:

    écris :

    if toscane(n)==9:
    un appel à la fonction toscane renverra le contenu de somme qui pourra être comparé à 9.

    Fais la même chose pour l'autre condition.

    Enfin il serait plus propre de déclarer la fonction toscane au début du programme, après les importation de librairies et pas dans le programme principal.

  5. A voir en vidéo sur Futura
  6. #5
    leon266

    Re : lancer de dés

    J'ai essayé de faire les modifications que vous m'avez dit. cependant, le programme tourne mais le compteur permettant de calculer la somme de 9 et de 10 ne fonctionne pas. J'ai vérifié toutes les indentations et elles sont correctes. Pouvez-vous m'aider s'il vous plaît?

    import random
    n =int(input("valeur de n"))
    def toscane(n):
    for i in range(1,n):
    de1=random.randint(1,6)
    de2=random.randint(1,6)
    de3=random.randint(1,6)
    somme=de1+de2+de3
    return(somme)
    print(toscane(n))

    somme9=0
    somme10=0
    if toscane(n)==9:
    somme9=somme9+1
    if toscane(n)==10:
    somme10=somme10+1

    print(somme9)
    print(somme10)

  7. #6
    eudea-panjclinne

    Re : lancer de dés

    Il y a des erreurs de logique dans ce programme.
    La boucle for ne sert à rien dans la fonction toscane, vu que ses différents résultats se mettent dans la variable somme et s'effacent successivement.
    Où faut-il donc mettre cette boucle ?

    J'ai refait le programme, apparemment c'est le 10 qui apparait plus souvent, c'est normal ? J'ai un peu oublié ce problème que j'ai fait il y a longtemps.

  8. #7
    leon266

    Re : lancer de dés

    Oui c'est normal, le but du programme est de montrer que l'on obtiendra plus de 10 que de 9.

    Il faudrait mettre la boucle for avant le premier if ?

  9. #8
    Merlin95

    Re : lancer de dés

    Dans ta boucle for, il faut que tu comptes le nombre de fois ou la somme vaut 9 et 10. Toi tu le fais que pour i = n puisque tu comptes somme9 et somme10 après avoir fait return(somme).
    Ca doit plus ressembler à ca :

    Code:
    import random
    def toscane(n):
      somme9=0
      somme10=0
    
      for i in range(1,n):
        somme=0
        de1=random.randint(1,6)
        de2=random.randint(1,6)
        de3=random.randint(1,6)
        somme=de1+de2+de3
    
        if toscane(n)==9:
          somme9=somme9+1
        if toscane(n)==10:
          somme10=somme10+1
    
      return [somme9, somme10]
    
    n =int(input("valeur de n"))
    results = toscane(n)
    print("Nombre de 9 : ".join(results[0]))
    print("Pourcentage de 9 : ".join(100*results[0]/n).join("%"))
    
    print("Nombre de 10 : ".join(results[1]))
    print("Pourcentage de 10 : ".join(100*results[1]/n).join("%"))
    Dernière modification par Merlin95 ; 23/03/2019 à 18h38.

  10. #9
    Merlin95

    Re : lancer de dés

    Pour faire 10 on a :
    1+6+3
    1+5+4
    1+4+5
    1+3+6

    2+6+2
    2+5+3
    2+4+4
    2+3+5
    2+2+6

    3+6+1
    3+5+2
    3+4+3
    3+3+4
    3+2+5
    3+1+6

    4+5+1
    4+4+2
    4+3+3
    4+2+4
    4+1+5

    5+4+1
    5+3+2
    5+2+3
    5+1+4

    6+3+1
    6+2+2
    6+1+3

    27 possibilités

    Pour 9 tu as
    1+6+2
    1+5+3
    1+4+4
    1+3+5
    1+2+6

    2+6+1
    2+5+2
    2+4+3
    2+3+4
    2+2+5
    2+1+6

    3+5+1
    3+4+2
    3+3+3
    3+2+4
    3+1+5

    4+4+1
    4+3+2
    4+2+3
    4+1+4

    5+3+1
    5+2+2
    5+1+3

    6+2+1

    24 possibilités.

    Donc il y a 27/24 =1.125 fois plus de 10 que de 9.

  11. #10
    leon266

    Re : lancer de dés

    Merci Merlin95 pour votre aide. Cependant, quand je fais votre programme, il me marque un message d'erreur comme quoi la boucle se finit jamais... Comment est ce que je peux faire pour régler ce problème svp?

  12. #11
    Merlin95

    Re : lancer de dés

    Tu n'a pas fait d'erreur d'indentation ? J'ai pas d,environnement python faut que je vois sur un env en ligne.

  13. #12
    leon266

    Re : lancer de dés

    Non j'ai bien fait attention aux indentations que vous avez noté mais même quand je test le programme sur visualizepython (qui est python en ligne), il me met un message d'erreur comme quoi la boucle est infinie

  14. #13
    Merlin95

    Re : lancer de dés

    Regarde ligne 13 et 15 il y a un appel récursif à la fonction toscane.

  15. #14
    Merlin95

    Re : lancer de dés

    Code:
    import random
    def toscane(n):
      somme9=0
      somme10=0
    
      for i in range(1,n):
        somme=0
        de1=random.randint(1,6)
        de2=random.randint(1,6)
        de3=random.randint(1,6)
        somme=de1+de2+de3
    
        if somme==9:
          somme9=somme9+1
        if somme==10:
            somme10=somme10+1
          
      return [somme9, somme10]
    n=int(input("valeur de n"))
    results = toscane(int(n))
    print("Nombre de 9 : " + str(results[0]))
    
    print("Pourcentage de 9 : " + str(100*results[0]/n) + "%")
    
    print("\n")
    
    print("Nombre de 10 : " + str(results[1]))
    print("Pourcentage de 10 : " + str(100*results[1]/n) + "%")

  16. #15
    leon266

    Re : lancer de dés

    Merci beaucoup pour votre aide, le programme fonctionne par contre je ne comprend pas à quoi correspondent les +str des lignes 21 à 28 Pouvez vous m'indiquer de quoi il s'agit s'il vous plaît ?

  17. #16
    Merlin95

    Re : lancer de dés

    str(parameter) est une fonction qui transforme parameter en string.

    "mastring1" + "mastring2" correspond à la concaténation des deux chaines à savoir "mastring1mastring2"

  18. #17
    leon266

    Re : lancer de dés

    d'accord merci beaucoup pour votre aide

  19. #18
    Merlin95

    Re : lancer de dés

    De rien mais force toi aussi à comprendre la logique du programme.

Discussions similaires

  1. Lancer de dés
    Par joel_5632 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 11/11/2015, 09h43
  2. Lancer de dés
    Par invite44d70ebf dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 18/03/2013, 14h01
  3. Lancer des dés
    Par invite9444b107 dans le forum Mathématiques du collège et du lycée
    Réponses: 3
    Dernier message: 24/11/2012, 20h27
  4. Lancer de 4 dés
    Par SchliesseB dans le forum Mathématiques du supérieur
    Réponses: 23
    Dernier message: 10/05/2012, 20h38
  5. Lancer de dés
    Par SimonF dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 27/02/2012, 17h02