Souci sur jeu du pendu si plusieur occurences idem

-
Bonjour a tous,

je reviens avec mon code pour mon jeu du pendu

Celui ci fonctionne mais je viens de remarquer que lorsque j'entre une lettre qui a plusieurs positions, celle ci est toujours placée a la première place rencontrée et donc impossible de gagner le jeu car la deuxième position n'est jamais atteinte.

Ex :

panthere. Le "e" est toujours placé après le "h" mais jamais en fin de mot

comment puis atteindre la deuxième position en cas de doublon du caractere ?

Merci d'avance pour votre aide

import getpass
mot = getpass.getpass("Entrez le mot caché :")
mot = list(str(mot))
erreur =0
dessins = [
"""
 |     
 |
 |
 |
 |
 |
 |""",
"""
---------
 |     
 |
 |
 |
 |
 |
 |""",
"""
---------
 |     |
 |
 |
 |
 |
 |
 |""",
 """
 ---------
 |     |
 |     o
 |
 |
 |
 |
 |""",
"""
 ---------
 |     |
 |     O
 |     +
 |
 |
 |
 |""",
"""
 ---------
 |     |
 |     O
 |    -+
 |
 |
 |
 |""",
 """
 ---------
 |     |
 |     O
 |    -+-
 |
 |
 |
 |""",
 """
 ---------
 |     |
 |     O
 |   /-+-
 |
 |
 |
 |""",
 """
 ---------
 |     |
 |     O
 |   /-+-\\
 |
 |
 |
 |""",
 """
 ---------
 |     |
 |     O
 |   /-+-\\
 |  --
 |
 |
 |""",
 """
 ---------
 |     |
 |     O
 |   /-+-\\
 |  --   --
 |
 |
 |""",
 """
 ---------
 |     |
 |     O
 |   /-+-\\
 |  --   --
 |   |
 |
 |""",
"""
 ---------
 |     |
 |     O
 |   /-+-\\
 |  --   --
 |    | |
 |
 |""",
"""
 ---------
 |     |
 |     O
 |   /-+-\\
 |  --   --
 |    | |
 |    -
 |""",
"""
 ---------
 |     |
 |     O
 |   /-+-\\
 |  --   --
 |    | |
 |    - -
 |"""]
cpte =len(mot)
mot2 = [" "] * cpte
print(("Le mot a trouver comprend :"),cpte,("caracteres"))
print(mot2)
test = None
while erreur !=15 and test != True:
    lettre = str(input("Entrez votre lettre : "))
    test = lettre in mot
    if test == True:
        place = mot.index(lettre) 
        plac = place + 1
        print(("La lettre trouvé est a la"), plac, ("position"))
        mot2[place] = lettre
        print(mot2)
        test = mot == mot2
        
    else:
        print("La lettre ne se trouve pas de le mot")
        print(dessins[erreur])
        erreur = erreur +1
       

if mot != mot2:
    print("Perdu, vous ferez mieux la prochaine fois")
    print(("Le mot a trouver etait : "),"".join(mot))
else:
    print("bravo, vous etes un champion")
    print(("Le mot a trouver etait bien : "),"".join(mot))


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

Votre réponse

2 réponses

Messages postés
70
Date d'inscription
mercredi 1 novembre 2000
Dernière intervention
1 juin 2018
0
Merci
Salut,

une solution est d'utiliser la built in function 'zip' qui permet de faire 2 boucles 'for' en parallèle :

for i,j in zip(mot,range(len(mot))):
    if i == lettre:
	mot2[j] = lettre


--
Commenter la réponse de Mints
0
Merci
Re bonjour

j'ai reussi a faire un jeu du pendu qui me semble correcte

La seule chose que je n'ai pas faite c'est afficher le numéro de place dans la liste du caractère trouvé car quand il y en a plusieurs je n'affiche que la premiere occurence

Néanmoins, j'ai remplacé cela par l'affichage de la liste et ca me convient

je vous joins quand meme le code au cas ou ca servirait pour quelqu'un d'autre

J"en ai fait 2 : le premier avec un mot a entrer soi meme et l'autre faisant appel a une liste de mot

Merci encore pour votre aide

Code Pendu avec mot a entrer manuellement

import getpass
mot = getpass.getpass("Entrez le mot caché :")
mot = list(str(mot))
erreur =0
#Ajout variable caractere entré
caractere =[]
dessins = [
"""
|
|
|
|
|
|
|""",
"""
---------
|
|
|
|
|
|
|""",
"""
---------
| |
|
|
|
|
|
|""",
"""
---------
| |
| o
|
|
|
|
|""",
"""
---------
| |
| O
| +
|
|
  • | |""",""" --------- | | | O | -+ | | | |""", """ --------- | | | O | -+- | | | |""", """ --------- | | | O | /-+- | | | |""", """ --------- | | | O | /-+-\\ | | | |""", """ --------- | | | O | /-+-\\ | -- | | |""", """ --------- | | | O | /-+-\\ | -- -- | | |""", """ --------- | | | O | /-+-\\ | -- -- | | | |""",""" --------- | | | O | /-+-\\ | -- -- | | | | |""",""" --------- | | | O | /-+-\\ | -- -- | | | | - |""",""" --------- | | | O | /-+-\\ | -- -- | | | | - - |"""]cpte =len(mot)mot2 = [" "] * cpteprint(("Le mot a trouver comprend :"),cpte,("caracteres"))print(mot2)test = Nonewhile erreur !=15 and test != True: lettre = str(input("Entrez votre lettre : ")) test = lettre in mot if test == True:#------ Ancien ne peut trouver que la première occurence #place = mot.index(lettre) #plac = place + 1 #print(("La lettre trouvé est a la"), plac, ("position"))#------ Fin de l'ancien code print("Bravo vous avez trouvé une lettre du mot caché")#------ changement pour plusieurs lettre for index,lettre1 in enumerate(mot): if lettre1==lettre: mot2[index] = lettre #------ fin du changement pour plusieurs lettre#------ ancienne version mais ne trouve qu'une lettre dans le mot #mot2[place] = lettre#------ fin de l'ancienne version print(mot2) test = mot == mot2 else: print("La lettre ne se trouve pas de le mot") caractere.append(lettre) print(dessins[erreur]) #Affichage lettres entrées print(("Les lettres deja entrées non incluse dans le mot sont : "),caractere) print("\n") #Ajout des lettres deja trouvées print(mot2) erreur = erreur +1 if mot != mot2: print("Perdu, vous ferez mieux la prochaine fois") print(("Le mot a trouver etait : "),"".join(mot))else: print("bravo, vous etes un champion") print(("Le mot a trouver etait bien : "),"".join(mot))


Code pendu avec liste de mots


#import getpass
from random import *
#mot = getpass.getpass("Entrez le mot caché :")
liste= ["angle","armoire","banc","bureau","cabinet","carreau","chaise","classe","clef","coin","couloir","dossier","eau","ecole","entrer","escalier","etagere","exterieur","fenetre","interieur","lavabo","lit","marche","matelas","maternelle","meuble","mousse","mur","peluche","placard","plafond","porte","poubelle","radiateur","rampe","rideau","robinet","salle","salon","serrure","serviette","siege","sieste","silence","sol","sommeil","sonnette","sortie","table","tableau","tabouret","tapis","tiroir","toilette","vitre","aller","amener","apporter","appuyer","attendre","bailler","coucher","dormir","eclairer","emmener","emporter","entrer","fermer","frapper","installer","lever","ouvrir","presser","rechauffer","rester","sonner","sortir","venir","absent","assis","bas","haut","present","gauche","droite","debout","dedans","dehors","face","loin","pres","tard","tot","apres","avant","contre","dans","de","derriere","devant","du","sous","sur","crayon","stylo","feutre","mine","gomme","dessin","coloriage","rayure","peinture","pinceau","couleur","craie","papier","feuille","cahier","carnet","carton","ciseaux","decoupage","pliage","pli","colle","affaire","boite","casier","caisse","trousse","cartable","jeu","jouet","pion","domino","puzzle","cube","perle","chose","forme","carre","rond","pate","modeler","tampon","livre","histoire","bibliotheque","image","album","titre","conte","dictionnaire","magazine","catalogue","page","ligne","mot","enveloppe","etiquette","carte","appel","affiche","alphabet","appareil","camescope","cassette","chaine","chanson","chiffre","contraire","difference","doigt","ecran","ecriture","film","fois","foi","idee","instrument","intrus","lettre","liste","magnetoscope","main","micro","modele","musique","nom","nombre","orchestre","ordinateur","photo","point","poster","pouce","prenom","question","radio","sens","tambour","telecommande","telephone","television","trait","trompette","voix","xylophone","zero","chanter","chercher","choisir","chuchoter","coller","colorier","commencer","comparer","compter","construire","continuer","copier","couper","dechirer","decoller","decorer","decouper","demolir","dessiner","dire","discuter","ecouter","ecrire","effacer","entendre","entourer","envoyer","faire","finir","fouiller","gouter","imiter","laisser","lire","mettre","montrer","ouvrir","parler","peindre","plier","poser","prendre","preparer","ranger","reciter","recommencer","regarder","remettre","repeter","repondre","sentir","souligner","tailler","tenir","terminer","toucher","travailler","trier","ami","attention","camarade","colere","copain","coquin","dame","directeur","directrice","droit","effort","eleve","enfant","fatigue","faute","fille","garcon","gardien","madame","maitre","maitresse","mensonge","ordre","personne","retard","joueur","sourire","travail","aider","defendre","desobeir","distribuer","echanger","expliquer","gronder","obeir","obliger","partager","preter","priver","promettre","progres","progresser","punir","quitter","raconter","expliquer","refuser","separer","blond","brun","calme","curieux","different","doux","enerver","gentil","grand","handicape","inseparable","jaloux","moyen","muet","noir","nouveau","petit","poli","propre","roux","sage","sale","serieux","sourd","tranquille","arrosoir","assiette","balle","bateau","boite","bouchon","bouteille","bulles","canard","casserole","cuillere","cuvette","douche","entonnoir","gouttes","litre","moulin","pluie","poisson","pont","pot","roue","sac","plastique","saladier","seau","tablier","tasse","trous","verre","agiter","amuser","arroser","attraper","avancer","baigner","barboter","boucher","bouger","deborder","doucher","eclabousser","essuyer","envoyer","couler","partir","flotter","gonfler","inonder","jouer","laver","melanger","mouiller","nager","pleuvoir","plonger","pousser","pouvoir","presser","recevoir","remplir","renverser","secher","serrer","souffler","tirer","tourner","tremper","verser","vider","vouloir","amusant","chaud","froid","humide","interessant","mouille","sec","transparent","moitie","autant","beaucoup","encore","moins","peu","plus","trop","anorak","arc","bagage","baguette","barbe","bonnet","botte","bouton","bretelle","cagoule","casque","casquette","ceinture","chapeau","chaussette","chausson","chaussure","chemise","cigarette","col","collant","couronne","cravate","culotte","echarpe","epee","fee","fleche","fusil","gant","habit","jean","jupe","lacet","laine","linge","lunettes","magicien","magie","maillot","manche","manteau","mouchoir","moufle","noeud","paire","pantalon","pied","poche","prince","pyjama","reine","robe","roi","ruban","semelle","soldat","sociere","tache","taille","talon","tissu","tricot","uniforme","valise","veste","vetement","changer","chausser","couvrir","deguiser","deshabiller","enlever","habiller","lacer","porter","ressembler","clair","court","etroit","fonce","joli","large","long","multicolore","nu","use","bien","mal","mieux","presque","aiguille","ampoule","avion","bois","bout","bricolage","bruit","cabane","carton","clou","colle","crochet","elastique","ficelle","fil","marionnette","marteau","metal","metre","morceau","moteur","objet","outil","peinture","pinceau","planche","platre","scie","tournevis","vis","voiture","arracher","attacher","casser","coudre","detruire","ecorcher","enfiler","enfoncer","fabriquer","mesurer","percer","pincer","reparer","reussir","servir","taper","trouer","trouver","adroit","difficile","dur","facile","lisse","maladroit","pointu","tordu","accident","aeroport","camion","engin","feu","frein","fusee","garage","gare","grue","helicoptere","moto","panne","parking","pilote","pneu","quai","train","virage","vitesse","voyage","wagon","zigzag","arreter","atterrir","bouder","charger","conduire","demarrer","disparaitre","donner","ecraser","envoler","garder","garer","manquer","partir","poser","reculer","rouler","tendre","transporter","voler","abime","ancien","blanc","bleu","casse","cinq","dernier","deux","deuxieme","dix","gris","gros","huit","jaune","meme","neuf","pareil","premier","quatre","rouge","sept","seul","six","solide","trois","troisieme","un","vert","dessus","autour","vite","vers","acrobate","arret","arriere","barre","barreau","bord","bras","cerceau","chaise","cheville","chute","coeur","corde","corps","cote","cou","coude","cuisse","danger","doigts","dos","echasses","echelle","epaule","equipe","escabeau","fesse","filet","fond","genou","gymnastique","hanche","jambe","jeu","mains","milieu","montagne","mur","escalade","muscle","numero","ongle","parcours","pas","passerelle","pente","peur","pied","plongeoir","poignet","poing","pont","signe","singe","poutre","equilibre","prise","riviere","crocodile","roulade","pirouette","saut","serpent","sport","suivant","tete","toboggan","tour","trampoline","tunnel","ventre","accrocher","appuyer","arriver","baisser","balancer","bondir","bousculer","cogner","courir","danser","depasser","descendre","ecarter","escalader","gagner","gener","glisser","grimper","marcher","pattes","debout","monter","montrer","pencher","percher","perdre","ramper","rater","remplacer","respirer","retourner","revenir","sauter","soulever","suivre","tomber","transpirer","traverser","dangeureux","epais","fort","groupe","immobile","rond","serre","souple","ensemble","ici","jamais","toujours","souvent","bagarre","balancoire","ballon","bande","bicyclette","bille","cage","ecureuil","cerf","volant","chateau","coup","cour","course","echasse","flaque","eau","paix","pardon","partie","pedale","pelle","pompe","preau","raquette","rayon","recreation","sable","sifflet","signe","tas","tricycle","tuyau","velo","file","rang","bagarrer","battre","cacher","cracher","creuser","crier","degonfler","dispute","empecher","galoper","hurler","jongler","lancer","pedaler","plaindre","pleurer","poursuivre","proteger","saigner","salir","siffler","surveiller","trainer","trouver","fou","mechant"]
mot=choice(liste)
mot = list(str(mot))
#Ajout variable caractere entré
caractere =[]
erreur =0
dessins = [
"""
|
|
|
|
|
|
|""",
"""
---------
|
|
|
|
|
|
|""",
"""
---------
| |
|
|
|
|
|
|""",
"""
---------
| |
| o
|
|
|
|
|""",
"""
---------
| |
| O
| +
|
|
  • | |""",""" --------- | | | O | -+ | | | |""", """ --------- | | | O | -+- | | | |""", """ --------- | | | O | /-+- | | | |""", """ --------- | | | O | /-+-\\ | | | |""", """ --------- | | | O | /-+-\\ | -- | | |""", """ --------- | | | O | /-+-\\ | -- -- | | |""", """ --------- | | | O | /-+-\\ | -- -- | | | |""",""" --------- | | | O | /-+-\\ | -- -- | | | | |""",""" --------- | | | O | /-+-\\ | -- -- | | | | - |""",""" --------- | | | O | /-+-\\ | -- -- | | | | - - |"""]cpte =len(mot)mot2 = [" "] * cpteprint(("Le mot a trouver comprend :"),cpte,("caracteres"))print(mot2)test = Nonewhile erreur !=15 and test != True: lettre = str(input("Entrez votre lettre : ")) test = lettre in mot if test == True:#------ Ancien ne peut trouver que la première occurence #place = mot.index(lettre) #plac = place + 1 #print(("La lettre trouvé est a la"), plac, ("position"))#------ Fin de l'ancien code print("Bravo vous avez trouvé une lettre du mot caché")#------ changement pour plusieurs lettre for index,lettre1 in enumerate(mot): if lettre1==lettre: mot2[index] = lettre #------ fin du changement pour plusieurs lettre#------ ancienne version mais ne trouve qu'une lettre dans le mot #mot2[place] = lettre#------ fin de l'ancienne version print(mot2) test = mot == mot2 else: print("La lettre ne se trouve pas de le mot") caractere.append(lettre) print(dessins[erreur]) #Affichage lettres entrées print(("Les lettres deja entrées non incluse dans le mot sont : "),caractere) print("\n") #Ajout des lettres deja trouvées print(mot2) erreur = erreur +1 if mot != mot2: print("Perdu, vous ferez mieux la prochaine fois") print(("Le mot a trouver etait : "),"".join(mot))else: print("bravo, vous etes un champion") print(("Le mot a trouver etait bien : "),"".join(mot))
Commenter la réponse de lonewolf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.