Pendu

Fermé
T - 1 nov. 2013 à 15:01
 nikitalo - 11 nov. 2013 à 20:26
Bonjour,
je suis en spé ISN en terminale, j'ai commencé à utiliser python cette année donc j'ai encore du mal!
On doit faire un jeu de pendu mais j'arrive pas à faire que le programme remplace les "-" par les lettres trouvées, voici ce que j'ai fait pour l'instant
motAchercher=str(input("joueur 1: proposez un mot:"))
mot=""
for i in range (len(motAchercher)):
mot=mot+"-"
motAafficher=mot
print(motAafficher)
mot2=str(input("joueur 2: proposez une lettre:"))
while(motAchercher!=motAafficher):
print(motAafficher)
mot2=str(input("joueur 2: proposez une lettre:"))
for i in range (len(motAchercher)):
if(motAchercher[i]!=mot2):
i=i+1
if(motAchercher[i]==mot2):
motAafficher=mot2
print(motAafficher)
mot2=str(input("joueur 2: proposez une lettre:"))

c'est peut être tout faux ce que j'ai fait,
mais j'arrive vraiment pas à voir ce qu'il ne va pas

merci d'avance!

A voir également:

1 réponse

salut

C'est un bon début !

petite remarque: tu aurais pu nous mettre les indentations, ce n'est pas très pratique de déchiffrer ce que tu racontes sans.

1) N'appelle pas la lettre à chercher "mot2" mais plutot "lettre2".

2) le i=i+1 ne sert à rien (si tu utilisais une boucle while à la place du for, là, ça aurait été obligatoire)

3) tu as un problème à la ligne motAafficher=mot2, tu voulais surement mettre motAafficher[i]=mot2 ?
Dans ce cas, pas de bol, ce n'est toujours pas bon parce qu'une chaine de caractères ne peut pas etre modifiée de cette manière.

2 solutions :
1: utilise les listes qui peuvent être modifiée de cette manière
ou
2: Il faut que tu prennes une autre variable (appelée par exemple nouveauMot ou motAafficher2) vide au début de la boucle while que tu remplis comme tu l'as fait dans la première boucle for, c'est-a-dire en ajoutant une lettre à chaque itération (pour arriver à un mot qui ressemblerait par exemple à -o-te-- si le joueur vient de trouver la lettre e et qu'il avait déjà trouvé les lettre o et t). A chaque itération (ième lettre), il faut que tu rajoutes :
- soit la nouvelle lettre proposé par le joueur si elle correspond bien à la ième lettre du motAchercher (ici la 5ième lettre, le e)
- soit un tiret si la lettre proposée n'est pas bonne et que la lettre n'a pas déjà été trouvée (les lettres 1, 3, 6 et 7)
- soit la lettre qui a déjà été trouvée (les lettres o et t)
puis à la fin de la boucle while tu mets motAafficher = nouveauMot comme ça

ça a l'air compliqué comme ça mais il faut juste que tu crées cette nouvelle variable nouveauMot et que tu améliore tes boucles if pour coller aux trois conditions.

Bon courage !
0
Merci beaucoup pour ton aide! j'ai pu modifier quelques trucs mais c'est toujours pas bon, je sais pas si j'ai tout compris a ton explication.
mon programme maintenant:

motAchercher=str(input("joueur 1: proposez un mot:"))
mot=""
for i in range (len(motAchercher)):
mot=mot+"-"
motAafficher=mot
print(motAafficher)
lettre=str(input("joueur 2: proposez une lettre:"))
while(motAchercher!=motAafficher):
motAafficher2=""
for i in range (len(motAchercher)):
motAafficher2=lettre
if(motAchercher[i]==motAafficher2):
motAafficher2=motAafficher2+motAchercher[i]
else:
motAafficher2=motAafficher2+"-"
print(motAafficher2)
lettre=str(input("joueur 2: proposez une lettre:"))
if(motAchercher==motAafficher):
print("gagné",motAchercher)
0
Mets les indentations (les espaces au début de chaque ligne) et je verrai si je te consacre du temps :-)
0