Pendu python
_juan75
-
_juan75 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
_juan75 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un problème de python, comme tout bon débutant je fais un jeu du pendu mais j'ai quelques problèmes :
Tout d'abord quand on lance mon programme :
1- La fonction "vie" marche parfaitement, elle demande le niveau souhaiter et s'actualise en fonction,
2- Quand on nous demande d'entrer une lettre et qu'on la rentre par exemple "a" avec le mot "clavier", et bien sa met "--a----", donc sa marche mais ensuite il y a deux cas de figures (qui sont tout les deux des problèmes):
a) Donc on rentre une deuxième lettre qui EST dans le mot, par exemple "c", le code va mettre "c------" et supprimer le "a".
b) Deuxième cas de figure on rentre une lettre qui N'EST PAS dans le mot par exemple "z" , le code va mettre "-------" et supprimer le mot d'avant .
3- lorsque on met une mauvaise lettre, il affiche une diminution de trois unité sur le score au lieu d'une, comme si la fonction tourné trois fois ???? , alors pour l'instant j'ai rajouter un " + 3".
Désolé pour ce gros pavé et merci de m'orienté.
(Essayer de lancer le programme pour voir les problèmes)
J'ai un problème de python, comme tout bon débutant je fais un jeu du pendu mais j'ai quelques problèmes :
Tout d'abord quand on lance mon programme :
1- La fonction "vie" marche parfaitement, elle demande le niveau souhaiter et s'actualise en fonction,
2- Quand on nous demande d'entrer une lettre et qu'on la rentre par exemple "a" avec le mot "clavier", et bien sa met "--a----", donc sa marche mais ensuite il y a deux cas de figures (qui sont tout les deux des problèmes):
a) Donc on rentre une deuxième lettre qui EST dans le mot, par exemple "c", le code va mettre "c------" et supprimer le "a".
b) Deuxième cas de figure on rentre une lettre qui N'EST PAS dans le mot par exemple "z" , le code va mettre "-------" et supprimer le mot d'avant .
3- lorsque on met une mauvaise lettre, il affiche une diminution de trois unité sur le score au lieu d'une, comme si la fonction tourné trois fois ???? , alors pour l'instant j'ai rajouter un " + 3".
Désolé pour ce gros pavé et merci de m'orienté.
(Essayer de lancer le programme pour voir les problèmes)
# debut du jeu
from random import randint
def liste_mots():
liste=["nsi","math","ordinateur"]
return liste
def difficulte():
vie = 12
v = 0
while v != 1 and v != 2 and v != 3:
v = int(input("quelle niveau : 1,2 ou 3 ?"))
if v == 1:
vie=12
print('niveau 1 ->',vie,'vie')
elif v == 2:
vie=6
print('niveau 2 ->', vie, 'vies')
elif v == 3:
vie = 3
print('niveau 3 ->', vie, 'vies')
return vie
#Mot de départ avec tiret
def tiret_mot(mot):
n = len(mot)
res=''
for i in range (n):
res = res + "-"
return res
#Tirage du mot
def choix_mot(liste):
return (liste[randint(0,len(liste)-1)])
def tour_de_jeu(lettre, mot_a_tir, mot_initial,score):
mot_a_tir = ""
while score > 0:
for i in mot_initial:
if i in lettre:
mot_a_tir = mot_a_tir + lettre
else:
mot_a_tir = mot_a_tir + "-"
score = score -1
print("il vous restes",score + 3,"vies")
return mot_a_tir
# fonction jeu :
def jeu():
mot_a_trouver = choix_mot(liste_mots())
score = difficulte()
mot_a_tiret = tiret_mot(mot_a_trouver)
while score > 0:
lettre = input("proposez une lettre :")
print(tour_de_jeu(lettre,mot_a_tiret,mot_a_trouver,score))
if score == 0 and mot_a_tiret != mot_a_trouver:
print("perdu !")
elif score >= 0 and mot_a_tiret == mot_a_trouver:
print("Bien joué !")
print(jeu())
A voir également:
- Pendu python
- Jeu du pendu - Télécharger - Vie quotidienne
- Citizen code python avis - Accueil - Outils
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
13 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
avant tout:
- utilise les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
- ajoute des commentaires pour expliquer à quoi servent tes fonctions
- ajoute des print() dans ton code pour comprendre ce qu'il fait.
avant tout:
- utilise les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
- ajoute des commentaires pour expliquer à quoi servent tes fonctions
- ajoute des print() dans ton code pour comprendre ce qu'il fait.
Merci,
désolé je sais pas dutout comment utiliser les "balises" pour mettre du code.
J'ai déjà utiliser des print() pour tester mes fonctions je les ai juste enlever pour que se soit plus claire
désolé je sais pas dutout comment utiliser les "balises" pour mettre du code.
J'ai déjà utiliser des print() pour tester mes fonctions je les ai juste enlever pour que se soit plus claire
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
ce sera plus clair avec les commentaires, avec les print(), et avec ce qu'affichent les print().
ce sera plus clair avec les commentaires, avec les print(), et avec ce qu'affichent les print().
# debut du jeu from random import randint #C est la liste de mot qu on établie def liste_mots(): liste=["nsi","math","ordinateur"] return liste #print(liste_mots()) #C est la fonction qui demande le niveau souhaité(donc le nombre de vies), et qui établie le #nombre de vies en fonction de la réponse def difficulte(): vie = 12 v = 0 while v != 1 and v != 2 and v != 3: v = int(input("quelle niveau : 1,2 ou 3 ?")) if v == 1: vie=12 print('niveau 1 ->',vie,'vie') elif v == 2: vie=6 print('niveau 2 ->', vie, 'vies') elif v == 3: vie = 3 print('niveau 3 ->', vie, 'vies') return vie #print(difficulte()) #cette fonction transforme le mot choisie dans la liste en mot a tiret def tiret_mot(mot): n = len(mot) res='' for i in range (n): res = res + "-" return res #print(tiret_mot()) #cette fonction tire un mot au hasard un mot dans la liste def choix_mot(liste): return (liste[randint(0,len(liste)-1)]) #print(choix_mot()) #Cette fonction prend l état du jeu à un moment donné et renvoie # - le nouveau nombre de vies # - le nouveau mot à tiret (éventuellement modifié si l on a trouvé une nouvelle lettre) #-Et le nouveau score ( en principe ) def tour_de_jeu(lettre, mot_a_tir, mot_initial,score): mot_a_tir = "" while score > 0: for i in mot_initial: if i in lettre: mot_a_tir = mot_a_tir + lettre else: mot_a_tir = mot_a_tir + "-" score = score -1 print("il vous restes",score + 3,"vies") return mot_a_tir #print(tour_de_jeu("a",----,"jean",10)) #C est la fonction principal, c est la ou on va demander une lettre à l utilisateur, et ou on va mettre la fonction tour_de_jeu. def jeu(): mot_a_trouver = choix_mot(liste_mots()) score = difficulte() mot_a_tiret = tiret_mot(mot_a_trouver) while score > 0: lettre = input("proposez une lettre :") print(tour_de_jeu(lettre,mot_a_tiret,mot_a_trouver,score)) if score == 0 and mot_a_tiret != mot_a_trouver: print("perdu !") elif score >= 0 and mot_a_tiret == mot_a_trouver: print("Bien joué !") print(jeu())
oui oui je comprend très bien ce qui ce passe,
le problème c'est vraiment ce que j'ai expliqué au début
le problème c'est vraiment ce que j'ai expliqué au début
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
à chaque ligne tu veux dire parce que j'ai essayé déjà pour chaque fonction mais sa m'avance pas beaucoup.
j'ai un peu modifié le programme.
# debut du jeu from random import randint #C'est la liste de mot qu on établie def liste_mots(): liste=["nsi","math","ordinateur"] return liste #print(liste_mots()) #C'est la fonction qui demande le niveau souhaité(donc le nombre de vies), et qui établie le nombre de vies en fonction de la réponse def difficulte(): vie = 12 v = 0 while v != 1 and v != 2 and v != 3: v = int(input("quelle niveau : 1,2 ou 3 ?")) if v == 1: vie=12 print('niveau 1 ->',vie,'vie') elif v == 2: vie=6 print('niveau 2 ->', vie, 'vies') elif v == 3: vie = 3 print('niveau 3 ->', vie, 'vies') return vie #print(difficulte()) #cette fonction transforme le mot choisie dans la liste en mot a tiret def tiret_mot(mot): n = len(mot) res='' for i in range (n): res = res + "-" return res #print(tiret_mot()) #cette fonction tire un mot au hasard un mot dans la liste def choix_mot(liste): return (liste[randint(0,len(liste)-1)]) #print(choix_mot()) #Cette fonction prend l'état du jeu à un moment donné et renvoie # - le nouveau nombre de vies # - le nouveau mot à tiret (éventuellement modifié si l'on a trouvé une nouvelle lettre) #-Et le nouveau score ( en principe ) def tour_de_jeu(lettre, mot_a_tir, mot_initial,score): mot_a_tir = "" for i in mot_initial: if i in lettre: mot_a_tir = mot_a_tir + lettre print("il vous restes", score, "vies") return mot_a_tir else: mot_a_tir = mot_a_tir + "-" score = score -1 print("il vous restes",score,"vies") return mot_a_tir #print(tour_de_jeu("a",----,"jean",10)) #C'est la fonction principal, c'est la ou on va demander une lettre à l'utilisateur, et ou on va mettre la fonction tour_de_jeu. def jeu(): mot_a_trouver = choix_mot(liste_mots()) score = difficulte() mot_a_tiret = tiret_mot(mot_a_trouver) while score > 0: lettre = input("proposez une lettre :") print(tour_de_jeu(lettre,mot_a_tiret,mot_a_trouver,score)) if score == 0 and mot_a_tiret != mot_a_trouver: print("perdu !") elif score >= 0 and mot_a_tiret == mot_a_trouver: print("Bien joué !") print(jeu())
et bien non j'ai toujours le problème au niveau de la fonction tour_de_jeu
je l'ai extrait du programme pour la modifier plus facilement et pour avoir un meilleur angle de vue mais je n'arrive toujours pas à cerner le problème.
J'ai déjà essayer de changer les indentations...ect rien à faire avec mes connaissances.
Je pense qu'il faudrait créé une boucle dans la fonction tour_de_jeu ????
je l'ai extrait du programme pour la modifier plus facilement et pour avoir un meilleur angle de vue mais je n'arrive toujours pas à cerner le problème.
J'ai déjà essayer de changer les indentations...ect rien à faire avec mes connaissances.
Je pense qu'il faudrait créé une boucle dans la fonction tour_de_jeu ????
def tour_de_jeu(lettre, mot_a_tir, mot_initial,score): while score > 0: for i in mot_initial: if i in lettre: mot_a_tir = mot_a_tir + lettre print("il vous restes", score, "vies") return mot_a_tir else: mot_a_tir = mot_a_tir + "-" score = score -1 print("il vous restes",score,"vies") return mot_a_tir
J'ai résolu mon problèmes, mais j'ai encore un problème avec cette fonction qui se réinitialise à chaque tours :
def tour_de_jeu(lettre,mot_a_tir,mot_initial,score): new_mot = "" trouve = False for i in range(len(mot_initial)): if mot_initial[i]==lettre: new_mot=new_mot+lettre trouve = True else: new_mot = new_mot + mot_a_tir[i] if not(trouve): score = score -1 print(new_mot,"il vous reste",score,"vies") return "" #print(tour_de_jeu("a","----","Jean",4))