Partage
  • Partager sur Facebook
  • Partager sur Twitter

Test sur Variable

Refus de tout test sur une variable

Sujet résolu
    27 décembre 2015 à 11:11:19

    Bonjour, j'ai vraiment besoin de votre aide. Je suis débutant en programmation et je veux m'exercer en faisant des petits jeux. J'ai décidé de faire le jeu du pendu, mais voilà, mon programme refuse tout test avec ma variable [vies] qui est un nombre. Je vous ai mis tout mon programme, si jamais j'avais fait une erreur plus haut qui cause mon problème. Merci d'avance pour vos réponses!
    #---------------# Jeu du Pendu #---------------#
    alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
    listeSeparateur = ["."," ",",",";",":","-","'"]
    formulerHypothese = ["hypothese","hypothèse","Hypothese","Hypothèse","HYPOTHESE"] #Supprimer
    essais = []
    motCache = []
    #---------------# Mot à deviner #---------------#
    motDeviner = input("Veuillez saisir le mot à faire deviner: ")
    motDeviner.lower()
    print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n") #Cache le mot à faire deviner
    #---------------# Affiche le mot caché #---------------#
    for lettre in range (len(motDeviner)):
        if motDeviner[lettre] in (listeSeparateur):
            motCache.append(motDeviner[lettre])
        else:
            motCache.append("_")
    print("Voici le mot à deviner:\n")
    print (' '.join(motCache))
    print ("\n")
    #---------------# Programme Jeu #---------------#
    vies = 10 #Il refuse tout test avec cette variable
    while ((' '.join(motCache)) != (' '.join(motDeviner))):
            a=False
            hypothese = ""
            while hypothese not in (alphabet):      #Boucle pour entrer UNE LETTRE à tester
                hypothese = input("Veuillez entrer une lettre à tester: ")
            for lettre in range (len(motDeviner)):
                if hypothese == motDeviner[lettre]:
                    motCache[lettre] = motDeviner[lettre]
                    a=True
            if a==True:    #Si hypothèse fait partie du motDeviner
                print("La lettre",hypothese,"fait partie du mot à deviner.")
                print("Vous avez",vies,"vies.")
                
            elif a == False: #Si hypothèse ne fait pas partie du motDeviner
                essais.append(hypothese)
                vies = vies-1
                
                print ("La lettre [",hypothese,"] ne fait pas partie du mot à deviner.
                print ("Vous avez perdue une vie, il vous reste donc",vies,"vies.")
                print ("Liste des lettres testées ne faisant pas partie du mot:")
                print (' | '.join(essais))
            elif vies == 0:
                ((' '.join(motCache)) == (' '.join(motDeviner)))
            print ("\nVoici le mot à deviner:")
            print (' '.join(motCache))  #Affiche le motCache en chaîne de caractère
            print ("\n")        
    if vies == 0:
        print("Dommage, vous avez perdu!\nLe mot à trouver était:",motDeviner)
        print("Vous y arriverez peut-être la prochaine fois :)")
    elif vies == 10:
        print("Bravo! Vous avez trouvé le mot [",motDeviner,"] en un seul coup!
        print("Vous êtes un être supérieur!")
    else:
        print("Bravo! Vous avez trouvé le mot [",motDeviner,"] en",(10-vies),"coups!")

    -
    Edité par Coin? Coin! 27 décembre 2015 à 11:12:18

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      27 décembre 2015 à 12:55:31

      Dans ta condition de fin de partie, il serait logique d'y mettre ta variable vies

      Tant que mot différent de secret et pas fin de vie
          Alors jouer

      Pour ton problème j'ai vite regarder, mais ton problème est typique non pas d'un test irréalisé, mais plutôt d'un test invisible provoqué par une condition qu'il ne teste jamais car un autre test a été fait avant.

      • Partager sur Facebook
      • Partager sur Twitter
        27 décembre 2015 à 14:56:24

        J'ai déjà essayé de mettre while vies != 0 or ((' '.join(motCache)) != (' '.join(motDeviner))) 

        Cependant, le test vies!=0 ne fonctionnait toujours pas. Peu importe où est placé le test sur cette variable dans le programme il ne l'effectue pas :/

        • Partager sur Facebook
        • Partager sur Twitter
          27 décembre 2015 à 15:15:12

          Salut, il y a une partie de ton code qui ne sera jamais exécuté celui-ci:

          elif vies == 0:
                      ((' '.join(motCache)) == (' '.join(motDeviner)))
                  print ("\nVoici le mot à deviner:")
                  print (' '.join(motCache))  #Affiche le motCache en chaîne de caractère
                  print ("\n")       

          Pour la simple et bonne raison que juste avant tu as

          if a==True:  
          
          elif a == False: 

          et donc ton code rentrera dans une des deux condition, et avec un elif une fois rentré il ne va pas plus loin. Remplace le elif vies == 0 par if vies == 0


          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            27 décembre 2015 à 16:12:32

            Coin? Coin! a écrit:

            J'ai déjà essayé de mettre while vies != 0 or ((' '.join(motCache)) != (' '.join(motDeviner)))

            Pourquoi or ?

            -
            Edité par Anonyme 27 décembre 2015 à 16:14:04

            • Partager sur Facebook
            • Partager sur Twitter

            Test sur Variable

            × 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