Partage
  • Partager sur Facebook
  • Partager sur Twitter

jeu de devinette

Sujet résolu
    16 septembre 2020 à 15:49:34

    Bonjour

    J'ai un petit problème avec ce code consacré à un jeu de devinette. En fait Si le nombre saisi correspond au nombre tiré au hasard dans "secret", on affiche " Gagné en x essais" (x = nombre d'essais).
    Si le nombre saisi est supérieur au nombre tiré au hasard dans "secret", on affiche: "Trop grand" et
    si le nombre saisi est plus petit que le nombre tiré au hasard dans "secret", on affiche : "Trop petit". Si on n'a pas gagné, on a au maximum 6 essais. Après le 6ème essai, il est affiché : "Perdu, le secret était: y", y étant le nombre qui devrait être tiré dans secret. Voici le code que j'ai écrit:


    import random
    NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs
    secret = random.randint(0, 100)
    nb_essai = 0
    nombre = int(input())
    for i in range(secret):
    nb_essai = nb_essai + 1
    if nombre == secret:
    print("Gagné en", nb_essai, "essais !")
    elif nombre != secret:
    nb_essai = NB_ESSAIS_MAX
    if nombre > secret:
    print("Trop grand")
    nombre = int(input())
    elif nombre < secret:
    print("Trop petit")
    nombre = int(input())
    else:
    print("Perdu ! Le secret était", secret)

    Le problème que j'ai est que:

    le message "Perdu, le secret était: y" ne s'affiche pas même après 6 tentatives infructueuses.

    Pouvez-vous m'aider à trouver une solution?




    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2020 à 16:06:20

      c'est parce que ton code traduit en français ne fait pas ce que tu as dit en français.

      une autre manière de le dire:

      tant qu'il reste des essais, demander un nombre; si le nombre est plus petit ou plus grand que secret alors l'indiquer et retirer un essai, s'il est égal à secret alors l'indiquer et quitter.

      y a plus qu'à traduire en python.

      -
      Edité par josmiley 16 septembre 2020 à 16:06:54

      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        16 septembre 2020 à 16:08:20

        ça risque d'être compliqué de t'aider si nous n'avons pas les mêmes indentations que dans ton code :/ (si c'est cette indentation de code que tu as, ça ne peut pas bien fonctionner)
        Corrige ça dans ton post si possible
        Sinon ta boucle for doit être faite par rapport à NB_ESSAIS_MAX et non pas secret (for i in range(NB_ESSAIS_MAX): ); et dans cette boucle, il ne devrait y avoir qu'un seul appel à input()

        Après, je ne comprends pas pourquoi tu donnes à nb_essai la valeur NB_ESSAIS_MAX quand le nombre entré est différent de secret.

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2020 à 20:28:44

          Bonjour à tous

          Merci de vos orientations. J'ai repris le code et j'ai obtenu de meilleurs résultats, mais il y a une dernière chose qui me bloque: l'affichage du résultat après les 6 essais infructueux ("Perdu ! Le secret était"...). Voici le code:

          import random
          NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs
          secret = random.randint(0, 100)
          nb_essai = 0
          while nb_essai != NB_ESSAIS_MAX:
          nombre = int(input())
          nb_essai = nb_essai + 1
          if nombre != secret:
          if nombre > secret:
          print("Trop grand")
          elif nombre < secret:
          print("Trop petit")
          print("Perdu ! Le secret était", secret) ## C'est cet affichage que n'arrive pas à effectuer
          else:
          print("Gagné en", nb_essai, "essais !")

          J'espère que vous pouvez m'aider à trouver la solution.

          -
          Edité par SalifSeyd 16 septembre 2020 à 20:31:31

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2020 à 20:59:42

            import random
            NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs
            secret = random.randint(0, 100)
            nb_essai = 0
            while nb_essai != NB_ESSAIS_MAX:
                nombre = int(input())
                nb_essai = nb_essai + 1
                if nombre != secret:
                    if nombre > secret:
                        print("Trop grand")
                    elif nombre < secret:
                        print("Trop petit")
                    else:
                        print("Gagné en", nb_essai, "essais !")
                        break # quitter
            # ici faire un teste pour savoir si on a quitté la boucle parce qu'il n'y a plus d'essai,si oui faire le print
            # il y a deux façons de faire
                #print("Perdu ! Le secret était", secret)

            -
            Edité par josmiley 16 septembre 2020 à 21:00:02

            • Partager sur Facebook
            • Partager sur Twitter

            Python c'est bon, mangez-en. 

              16 septembre 2020 à 21:42:21

              Josmiley, merci pour la proposition. J'ai pu aussi faire autrement en mettant "if nombre == secret" en premier. Le résultat est quasiment bon. Voici le code:

              import random
              NB_ESSAIS_MAX = 6
              secret = random.randint(0, 100)
              nb_essai = 0
              while nb_essai != NB_ESSAIS_MAX:
              nombre = int(input())
              nb_essai = nb_essai + 1
              if nombre == secret:
              print("Gagné en", nb_essai, "essais !")
              elif nombre != secret:
              if nombre > secret:
              print("Trop grand")
              elif nombre < secret:
              print("Trop petit")
              print("Perdu ! Le secret était", secret)

              Voici ce que ça donne:

              50
              Trop petit
              24
              Trop petit
              37
              Trop petit
              43
              Trop petit
              40
              Trop petit
              41
              Trop petit
              Perdu ! Le secret était 94

              Le dernier problème que j'ai, c'est d'afficher le dernier nombre sans  afficher "Trop petit" ou "Trop grand" avant "Perdu ! Le secret était...". Voici une exemple de ce que je souhaite:

              50
              Trop grand
              24
              Trop petit
              37
              Trop petit
              43
              Trop grand
              40
              Trop petit
              41
              Perdu ! Le secret était 42

              -
              Edité par SalifSeyd 16 septembre 2020 à 21:47:14

              • Partager sur Facebook
              • Partager sur Twitter
                17 septembre 2020 à 10:53:51

                josmiley a écrit:

                import random
                NB_ESSAIS_MAX = 6 #Nombre maximum d'essais autorisés en cas d'échecs
                secret = random.randint(0, 100)
                nb_essai = 0
                while nb_essai != NB_ESSAIS_MAX:
                    nombre = int(input())
                    nb_essai = nb_essai + 1
                    if nombre != secret:
                        if nombre > secret:
                            print("Trop grand")
                        elif nombre < secret:
                            print("Trop petit")
                        else:
                            print("Gagné en", nb_essai, "essais !")
                            break # quitter
                # ici faire un teste pour savoir si on a quitté la boucle parce qu'il n'y a plus d'essai,si oui faire le print
                # il y a deux façons de faire
                    #print("Perdu ! Le secret était", secret)

                -
                Edité par josmiley il y a environ 13 heures


                je pense que ta ligne if nombre!=secret est en trop (ça va être compliqué de gagner ainsi :p )
                • Partager sur Facebook
                • Partager sur Twitter
                  17 septembre 2020 à 14:18:20

                  Effectivement :honte:
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python c'est bon, mangez-en. 

                    17 septembre 2020 à 15:59:13

                    @SalisSeyd essaie de bien nous mettre les indentations comme tu as dans ton code (le respect de l'indentation est primordial en python)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 septembre 2020 à 16:41:48

                      Voici le code qui marche à peu près. Ce que je souhaite, c'est que "Trop grand" ou "Trop petit" ne s'affiche pas à la 6ème entrée infructueuse. Le seule message qui doit s'afficher après la sixième entrée fausse est : "Perdu ! Le secret était ..."

                      import random
                      NB_ESSAIS_MAX = 6
                      secret = random.randint(0, 100)
                      nb_essai = 0
                      while nb_essai != NB_ESSAIS_MAX:
                      nombre = int(input())
                      nb_essai = nb_essai + 1
                      if nombre == secret:
                      print("Gagné en", nb_essai, "essais !")
                      elif nombre != secret:
                      if nombre > secret:
                      print("Trop grand")
                      elif nombre < secret:
                      print("Trop petit")
                      print("Perdu ! Le secret était", secret)

                      -
                      Edité par SalifSeyd 17 septembre 2020 à 18:21:45

                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 septembre 2020 à 18:35:57

                        à la place du elif nombre != secret: je mettrais alors elif nb_essai<NB_ESSAIS_MAX:
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 septembre 2020 à 18:37:25

                          umfred a écrit:

                          @SalisSeyd essaie de bien nous mettre les indentations comme tu as dans ton code (le respect de l'indentation est primordial en python)


                          Lorsque j'envoie les messages, les indentations d'origine sont désorganisées. Comment faire?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 septembre 2020 à 18:44:11

                            un copier/coller dans la fenêtre qui s'ouvre en cliquant sur le bouton </> (en choisissant python dans la liste), ça devrait marcher, sinon rajouter manuellement en tapant 4 espaces pour une indentation(un peu fastidieux j'admets)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 septembre 2020 à 19:46:06

                              Voici le code qui marche à peu près. Ce que je souhaite, c'est que "Trop
                               grand" ou "Trop petit" ne s'affiche pas à la 6ème entrée infructueuse. 
                              Le seule message qui doit s'afficher après la sixième entrée fausse est :
                               "Perdu ! Le secret était ..."
                              import random
                              NB_ESSAIS_MAX = 6
                              secret = random.randint(0, 100)
                              nb_essai = 0
                              while nb_essai != NB_ESSAIS_MAX:
                                  nombre = int(input())
                                  nb_essai = nb_essai + 1
                                  if nombre == secret:
                                      print("Gagné en", nb_essai, "essais !")
                                  elif nombre != secret:
                                      if nombre > secret:
                                          if nb_essai <6 :
                                              print("Trop grand")
                                          else:
                                              print(end='')
                                      elif nombre < secret:
                                          if nb_essai <6 :
                                              print("Trop petit")
                                          else:
                                              print (end='')
                              print("Perdu ! Le secret était", secret)

                              -
                              Edité par SalifSeyd 17 septembre 2020 à 19:48:45

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 septembre 2020 à 12:30:53

                                je m'auto-cite

                                umfred a écrit:

                                à la place du elif nombre != secret: je mettrais alors elif nb_essai<NB_ESSAIS_MAX:


                                import random
                                NB_ESSAIS_MAX = 6
                                secret = random.randint(0, 100)
                                nb_essai = 0
                                while nb_essai != NB_ESSAIS_MAX:
                                    nombre = int(input())
                                    nb_essai = nb_essai + 1
                                    if nombre == secret:
                                        print("Gagné en", nb_essai, "essais !")
                                        break #il ne faut pas oublier de quitter quand on a gagné
                                    elif nb_essai < NB_ESSAIS_MAX:
                                        if nombre > secret:
                                            print("Trop grand")
                                        elif nombre < secret:
                                            print("Trop petit")
                                    else:
                                        print("Perdu ! Le secret était", secret)
                                


                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 septembre 2020 à 15:23:07

                                  umfred a écrit:

                                  je m'auto-cite

                                  umfred a écrit:

                                  à la place du elif nombre != secret: je mettrais alors elif nb_essai<NB_ESSAIS_MAX:


                                  import random
                                  NB_ESSAIS_MAX = 6
                                  secret = random.randint(0, 100)
                                  nb_essai = 0
                                  while nb_essai != NB_ESSAIS_MAX:
                                      nombre = int(input())
                                      nb_essai = nb_essai + 1
                                      if nombre == secret:
                                          print("Gagné en", nb_essai, "essais !")
                                          break #il ne faut pas oublier de quitter quand on a gagné
                                      elif nb_essai < NB_ESSAIS_MAX:
                                          if nombre > secret:
                                              print("Trop grand")
                                          elif nombre < secret:
                                              print("Trop petit")
                                      else:
                                          print("Perdu ! Le secret était", secret)
                                  


                                  Ce code là marche effectivement. Merci.



                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  jeu de devinette

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown