Aide pour finir un Pendu svp :/

Résolu
MajorAstral Messages postés 7 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai presque fini de faire un Pendu, je suis débutant dans la programmation sur Python 3.7.2 et je me suis donné un petit défi qui est de reproduire un pendu. Je suis bloquer sur mon programme, j'aimerais que quelqu'un puisse m'aider à terminer mon pendu, mon problème reste de dire a mon programme de ce terminer lorsque mon mot a été trouver ou si le nombre d’essai est terminé.

while True:
            mots= ["armoire","boucle","buisson", "bureau", "chaise", "carton", "couteau", "fichier", "garage","glace","journal","kiwi","lampe","liste","montagne","remise","sandale","taxi","vampire","volant",]
            from random import*
            motmystere=""
            mot=choice(mots)
            print (mot)

            motmystere=[]
            for lettre in mot:
                motmystere.append('*')

            print(" ".join(motmystere))


            compteur=10

            while compteur>0:
                lettreUser=input('Rentrer une lettre :')
                position=0
                for analyslettre in mot:            
                    if lettreUser==analyslettre:
                        print ('cette lettre est correcte')
                        motmystere[position]=lettreUser
                 
                position+=1
                print("".join(motmystere))
                       
                print()

                if lettreUser not in mot:
                    compteur-=1       
                else:
                    compteur==compteur
                print ('Il vous reste',compteur,'essais')

                if compteur==0:
                    print ('Vous avez perdu')

5 réponses

  1. MajorAstral Messages postés 7 Statut Membre
     
    Bonjour, voici est ce que c'est bon pour toi ^^ ?

    while True: 
    mots= ["armoire","boucle","buisson", "bureau", "chaise", "carton", "couteau", "fichier", "garage","glace","journal","kiwi","lampe","liste","montagne","remise","sandale","taxi","vampire","volant",] 
    from random import* 
    motmystere="" 
    mot=choice(mots) 
    print (mot) 
    
    motmystere=[] 
    for lettre in mot: 
    motmystere.append('*') 
    
    print(" ".join(motmystere)) 
    
    
    compteur=10 
    
    while compteur>0: 
    lettreUser=input('Rentrer une lettre :') 
    position=0 
    for analyslettre in mot: 
    if lettreUser==analyslettre: 
    print ('cette lettre est correcte') 
    motmystere[position]=lettreUser 
    
    position+=1 
    print("".join(motmystere)) 
    
    print() 
    
    if lettreUser not in mot: 
    compteur-=1 
    else: 
    compteur==compteur 
    print ('Il vous reste',compteur,'essais') 
    
    if compteur==0: 
    print ('Vous avez perdu')
    0
  2. MajorAstral Messages postés 7 Statut Membre
     
    while True:
                mots= ["armoire","boucle","buisson", "bureau", "chaise", "carton", "couteau", "fichier", "garage","glace","journal","kiwi","lampe","liste","montagne","remise","sandale","taxi","vampire","volant",]
                from random import*
                motmystere=""
                mot=choice(mots)
                print (mot)
    
                motmystere=[]
                for lettre in mot:
                    motmystere.append('*')
    
                print(" ".join(motmystere))
    
    
                compteur=10
    
                while compteur>0:
                    lettreUser=input('Rentrer une lettre :')
                    position=0
                    for analyslettre in mot:            
                        if lettreUser==analyslettre:
                            motmystere[position]=lettreUser
                            print("Correct")
                        position+=1
                    print("".join(motmystere))
                           
                    print()
    
                    if lettreUser not in mot:
                        compteur-=1       
                    else:
                        compteur==compteur
                    print ('Il vous reste',compteur,'essais')
    
                    if compteur==0:
                        print ('Vous avez perdu')
    
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tu écris que ton problème reste de dire a ton programme de ce terminer lorsque ton mot a été trouver ou si le nombre d’essai est terminé.
      comment se comporte ton programme?
      0
    2. bkz
       
      Bonjour.

      Ce qu'il te faut est l'instruction break de python.

      Voici un peu comment devrait se présenter ton programme.

      # Les imports doivent se situer en début de fichier
      # Et inutile de polluer l'espace global du script avec le import *
      # Il est préférable de garder le module dans son propre espace de nom
      import random
      
      # La liste des mots doit se situer hors de ta boucle while, il n'y a aucun intérêt
      # de la déclarer à multiple reprises
      mots= ["armoire","boucle","buisson", "bureau", "chaise", "carton", "couteau", "fichier", "garage","glace","journal","kiwi","lampe","liste","montagne","remise","sandale","taxi","vampire","volant",]
      
      while True:
          # On déclare le mot à deviner comme une liste de caractères, afin de faciliter
          # la comparaison
          mot = list(random.choice(mots))
      
          # En python, on peut muliplier un caractère
          motmystere = ['*'] * len(mot)
      
          print("".join(motmystere))
          compteur = 10
          
          while compteur > 0:
              lettreUser = input('Entrez une lettre :')
              # Sert à savoir si la lettre saisie se situe dans le mot
              lettreDansMot = False
              
              # enumerate permet d'obtenir les indices lors de l'itération
              for i, lettre in enumerate(mot):            
                  if lettre == lettreUser:
                      motmystere[i] = lettreUser
                      lettreDansMot = True
              
              # On peut passer plusieurs paramètres à print dont le \n (saut de ligne)
              print("".join(motmystere), '\n')
              
              # Si le mot mystère est égal au mot à deviner
              # On interrompt la boucle
              if mot == motmystere:
                  print('Bravo !')
                  break
              
              # Si la lettre est présente dans le mot
              if lettreDansMot:
                  print("Correct !")
              else:
                  compteur -= 1
              # Le compteur vaut 0, on interrompt la boucle
              if compteur == 0:
                  print ('Vous avez perdu...')
                  break
                  
              print ('Il vous reste', compteur, 'essais')
          
          autre = input('\nUne autre partie ?\nTapez 1 pour oui, 0 pour non: ')
          # Si choix diffréent de 1, on onterrompt la boucle principale
          if autre != '1':
              break
      


      Bon, ça te mâche un peu le travail, je te propose donc de faire une amélioration de façon à montrer chaque fois les lettres déjà saisies par le joueur, et refuser la saisie si la lettre à déjà été jouée.

      Bonne continuation.
      0
    3. Major
       
      Merci pour ce programme je connaissais pas la fonction break c'est bien de me l'avoir fait montrer. Je vais essayer de l'améliorer.
      0
  3. MajorAstral
     
    Comment je peu faire pour mettre un score a la fin de la partie et cumuler ce score avec la partie suivante?
    svp
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comment ferais-tu?
      0
    2. MajorAstral
       
      et bien j'ai rajouter avant le while une variable score=0 et ensuite j'ai mis dans apres le if mot==motmystere; un score=compteur+score et ensuite un print(score)
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > MajorAstral
         
        et tout cela fonctionne bien?
        0
    3. MajorAstral
       
      Non du coup ça fonctionne pas, l'erreur viens du break du if mot==motmystere psk sa stop la boucle a chaque fois et sa enregistre pas mon score d'avant
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > MajorAstral
         
        penses-tu avoir ajouté le nouveau code au bon endroit?
        c'est peut-être le moment de nous montrer à nouveau ton programme.
        0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. MajorAstral
     
      mots= ["armoire","boucle","buisson", "bureau", "chaise", "carton", "couteau", "fichier", "garage","glace","journal","kiwi","lampe","liste","montagne","remise","sandale","taxi","vampire","volant",]
    
    while True:
                from random import*
                mot=list(choice(mots))
                motmystere =['*']*len(mot)
                print(" ".join(motmystere))
                score=0
                compteur=10
    
                while compteur>0:
                    lettreUser=input('Rentrer une lettre :')
                    lettreDansMot=False
                    position=0
                    for analyslettre in mot:           
                        if analyslettre==lettreUser:
                            motmystere[position]=lettreUser
                            lettreDansMot=True
                        position+=1
                    print("".join(motmystere),'\n')
    
                    if mot== motmystere:
                        print('Bravo !')
                        score=compteur+score
                        print('Vous avez',score,'points')
                        break
                    
                    if lettreDansMot:
                        print("Correct !")      
                    else:
                        compteur-=1
                        print("Incorrect")
                        
                    print ('Il vous reste',compteur,'essais')
    
                    if compteur==0:
                        print('Le mot est:',mot)
                        print ('Vous avez perdu')
                        break
    
                fin=input('\nUne autre partie ?\nTaper 1 pour oui, 0 pour non: ')
                if fin !='1':
                    break
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il me semble plutôt que c'est
      score=0
      qui est mal placé.
      0
    2. MajorAstral
       
      Tu le mettrais dans le if mot==motmystere ?
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > MajorAstral
       
      loin de là!
      où l'as-tu mis, et quand est-il exécuté?
      quand est-il utile de l'exécuter?
      0
    4. MajorAstral
       
      Je l'ai mis avant le whyle parce que c'est une variable, il doit s'exécuter uniquement si le mot est trouver et il devrait se sauvegarder si le mot est trouver
      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > MajorAstral
       
      que fais
      score=0
      ?
      0