Probleme de boucle python (jeux pendu)
illana
-
jee pee Messages postés 42429 Date d'inscription Statut Modérateur Dernière intervention -
jee pee Messages postés 42429 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je suis désolée de vous déranger. Je suis débutante dans python, je dois réaliser un pendu. J'ai réussi a faire pas mal de chose.
Lorsque je gagne la partie parce que j'ai trouver le mot je n'arrive pas a sortir du jeu, il va continuer de me proposer de choisir une lettre parmi le mot déjà trouvé...
en exemple je vous met la console :
(comme vous pouvez le voir les 4 dernières lignes je doit rejouer sur le même mot ...)
Je ne comprend pas comment contourner ce problèmes... pouvez vous m'aider ?
------------------------------------------------
Voici mon code :
------------------------------------------------
-------------------------------------
Voila, merci d'avance pour votre aide :))
bonne soirée
Cordialement
Je suis désolée de vous déranger. Je suis débutante dans python, je dois réaliser un pendu. J'ai réussi a faire pas mal de chose.
Lorsque je gagne la partie parce que j'ai trouver le mot je n'arrive pas a sortir du jeu, il va continuer de me proposer de choisir une lettre parmi le mot déjà trouvé...
en exemple je vous met la console :
quelles listes voulez-vous? facile,normal ou difficile?
>facile
['_', '_', '_', '_', '_']
choisis une lettre : p
Attention!! Vous venez d'utiliser 1 des 6 tentatives
['p']
choisis une lettre : t
Félicitation !! Vous y êtes presque
['t', '_', '_', '_', '_']
choisis une lettre : tasse
félicitation,vous avez gagné
choisis une lettre e
Félicitation !! Vous y êtes presque
['t', '_', '_', '_', 'e']
choisis une lettre
(comme vous pouvez le voir les 4 dernières lignes je doit rejouer sur le même mot ...)
Je ne comprend pas comment contourner ce problèmes... pouvez vous m'aider ?
------------------------------------------------
Voici mon code :
------------------------------------------------
# -*- coding: utf-8 -*-
import random
continuer = True
trouve= True
while continuer:
print("quelles listes voulez-vou? facile,normal ou difficile?")
entree = None
while entree is None:
entree = input('>')
if entree not in ('facile', 'normal', 'difficile'):
entree = None
# creerliste de mots
listemot = ['bonjour', 'soleil', 'beurre', 'ordinateur', 'chocolat', 'animaux', 'batiment']
listemotfacile = ['chat', 'chien', 'coq', 'tasse', 'pendu', 'fleur']
listemotdifficile = ['teledetection', 'stratification', 'dictionnaire', 'radiateur']
# print (listemot)
# choix au hazard
if entree == 'facile': motordi = random.choice(listemotfacile)
if entree == 'normal': motordi = random.choice(listemot)
if entree == 'difficile': motordi = random.choice(listemotdifficile)
motADeviner = []
for i in range(len(motordi)):
motADeviner.append("_")
print(motADeviner)
lettrejoueur = []
lettreSaisie = []
# essai
nberreur = 0
while nberreur < 6 and continuer != False :
lettrejoueur = input("choisis une lettre")
for l in range(len(motordi)) :
if len(lettrejoueur) > 1:
if lettrejoueur == motordi :
print("felicitation,vous avez gagné")
if trouve == True :
break
if lettrejoueur == motordi[l]:
print("Félicitation !! Vous y êtes presque")
motADeviner[l] = lettrejoueur
print(motADeviner)
if lettrejoueur == motordi :
print("felicitation,vous avez gagné")
if trouve == True :
break
if lettrejoueur not in motordi:
nberreur = nberreur + 1
print("Attention!! Vous venez d'utiliser", nberreur, "des 6 tentatives")
if nberreur == 6:
print("Vous avez perdu :( ")
lettreSaisie.append(lettrejoueur)
print(lettreSaisie)
print("Voulez-vous continuer ? oui ou non")
entree = None
while entree is None:
entree = input('>')
if trouve ==True :
if entree not in ('oui', 'non'):
entree = None
if entree == 'non': continuer = False
print("fin du jeu")
-------------------------------------
Voila, merci d'avance pour votre aide :))
bonne soirée
Cordialement
Configuration: Windows / Chrome 77.0.3865.90
A voir également:
- Probleme de boucle python (jeux pendu)
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick jeux - Télécharger - Jeux vidéo
- Jeux du pendu - Télécharger - Vie quotidienne
- Jeux java football - Télécharger - Jeux vidéo
- Jeux zuma - Télécharger - Jeux vidéo
3 réponses
Bonjour,
D'abord voir pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
Ce qui empèche ton code de tourner correctement c'est que motordi est une chaine "chat" et que motADeviner est un tableau de caractère ['c','h','a','t'], tu ne peux donc pas les comparer, il faut transformer motordi.
En 46 il faudrait remplacer if lettrejoueur == motordi: par if motADeviner == list(motordi):
Après regarde la gestion de Continuer et Trouve et leur emplacement, puis Trouve doit démarrer à False et quand le mot est trouvé passer à True, enfin observe comment controler les 2 saisies en entrée par rapport aux réponses attendues avec le while. Ce code n'est pas parfait, mais il fonctionne mieux :
D'abord voir pour la mise en forme des sources, au dessus de la zone d'édition de tes messages, il y a des icônes pour l'enrichissement du texte. Celle qui a cet aspect
<> ▼permet d'appliquer au code, suivant une liste de valeurs, le format correspondant à sa nature (html, Php, C, Python, Shell, ...). Un petit tuto là : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ce qui empèche ton code de tourner correctement c'est que motordi est une chaine "chat" et que motADeviner est un tableau de caractère ['c','h','a','t'], tu ne peux donc pas les comparer, il faut transformer motordi.
En 46 il faudrait remplacer if lettrejoueur == motordi: par if motADeviner == list(motordi):
Après regarde la gestion de Continuer et Trouve et leur emplacement, puis Trouve doit démarrer à False et quand le mot est trouvé passer à True, enfin observe comment controler les 2 saisies en entrée par rapport aux réponses attendues avec le while. Ce code n'est pas parfait, mais il fonctionne mieux :
# -*- coding: utf-8 -*-
import random
continuer = True
while continuer:
print("quelles listes voulez-vous? facile, normal ou difficile?")
entree = None
while entree not in ('facile', 'normal', 'difficile'):
entree = input('> ')
# creerliste de mots
listemot = ['bonjour', 'soleil', 'beurre', 'ordinateur', 'chocolat', 'animaux', 'batiment']
listemotfacile = ['chat', 'chien', 'coq', 'tasse', 'pendu', 'fleur']
listemotdifficile = ['teledetection', 'stratification', 'dictionnaire', 'radiateur']
# print (listemot)
# choix au hazard
if entree == 'facile': motordi = random.choice(listemotfacile)
if entree == 'normal': motordi = random.choice(listemot)
if entree == 'difficile': motordi = random.choice(listemotdifficile)
motADeviner = []
for i in range(len(motordi)):
motADeviner.append("_")
print(motADeviner)
lettreSaisie = []
# essai
nberreur = 0
trouve= False
while nberreur < 6 and trouve != True :
lettrejoueur = input("choisir une lettre ")
for l in range(len(motordi)) :
if len(lettrejoueur) > 1:
if lettrejoueur == motordi :
print("felicitation,vous avez gagné")
trouve = True
break
if lettrejoueur == motordi[l]:
motADeviner[l] = lettrejoueur
print(motADeviner)
if motADeviner == list(motordi) :
print("felicitation,vous avez gagné")
trouve = True
break
print("Félicitation !! Vous y êtes presque")
if lettrejoueur not in motordi:
nberreur = nberreur + 1
print("Attention!! Vous venez d'utiliser", nberreur, "des 6 tentatives")
if nberreur == 6:
print("Vous avez perdu :( ")
lettreSaisie.append(lettrejoueur)
print(lettreSaisie)
print("Voulez-vous continuer ? oui ou non")
entree = None
while entree not in ('oui', 'non'):
entree = input('> ')
if entree == 'non': continuer = False
print("fin du jeu")
bonjour,
Merci beaucoup !!
autre petite question : savez vous comment proposer un indices contre une vie en moins ?
merci pour votre aide ^^
Merci beaucoup !!
autre petite question : savez vous comment proposer un indices contre une vie en moins ?
merci pour votre aide ^^