Aide pour finir un Pendu svp :/

Résolu/Fermé
MajorAstral Messages postés 6 Date d'inscription dimanche 23 décembre 2018 Statut Membre Dernière intervention 16 janvier 2019 - Modifié le 5 janv. 2019 à 22:39
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 - 6 janv. 2019 à 20:34
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

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
26 déc. 2018 à 19:16
bonjour, peux-tu utiliser la coloration syntaxique pour partager ton code?
0
MajorAstral Messages postés 6 Date d'inscription dimanche 23 décembre 2018 Statut Membre Dernière intervention 16 janvier 2019
26 déc. 2018 à 19:42
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
MajorAstral Messages postés 6 Date d'inscription dimanche 23 décembre 2018 Statut Membre Dernière intervention 16 janvier 2019
26 déc. 2018 à 19:44
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
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
26 déc. 2018 à 19:52
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
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
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
Comment je peu faire pour mettre un score a la fin de la partie et cumuler ce score avec la partie suivante?
svp
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
5 janv. 2019 à 22:55
comment ferais-tu?
0
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
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > MajorAstral
6 janv. 2019 à 09:10
et tout cela fonctionne bien?
0
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
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > MajorAstral
6 janv. 2019 à 09:58
penses-tu avoir ajouté le nouveau code au bon endroit?
c'est peut-être le moment de nous montrer à nouveau ton programme.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
  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
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
6 janv. 2019 à 17:57
il me semble plutôt que c'est
score=0
qui est mal placé.
0
Tu le mettrais dans le if mot==motmystere ?
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > MajorAstral
6 janv. 2019 à 18:41
loin de là!
où l'as-tu mis, et quand est-il exécuté?
quand est-il utile de l'exécuter?
0
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
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > MajorAstral
6 janv. 2019 à 18:50
que fais
score=0
?
0