Problème pendu...
OmeGaFire_
Messages postés
99
Statut
Membre
-
Felice_ Messages postés 271 Statut Membre -
Felice_ Messages postés 271 Statut Membre -
Bonjour,
Apprenant le Python, j'ai tenté de faire un pendu, mais une erreur que je n'arrive pas à trouver se manifeste.
Le code:
Bonne journée, OmeGaFire_
Apprenant le Python, j'ai tenté de faire un pendu, mais une erreur que je n'arrive pas à trouver se manifeste.
Le code:
#Imports
from random import choice
#Initialisation variables importantes
letter = ""
#Mots pendu
def getWords():
wordsList = [
"peinture",
"ecran",
"montagne",
"carte",
"python",
"balle",
"clavier",
"espoir",
"volant",
"carton",
"couteau",
"fiche",
"feuille",
"travail",
"sciences",
"scandale",
"canard",
"utile",
]
return wordsList
#Permet d'obtenir un mot random
def pickWord():
return choice(getWords())
#Récupération des entrées de l'utilisateur
def GetLettre():
lettre = input("Tapez une lettre: ")
lettre = lettre.lower()
if (len(lettre) > 1 or not lettre.isalpha()):
return GetLettre()
else:
return lettre
#Obtention du mot en partie trouvé
def getMaskedWord(word, foundLettres, testLettre):
maskedWord = ""
for lettre in word:
if testLettre in word:
maskedWord += foundLettres
else:
maskedWord+="*"
return maskedWord
#Initialisation
def main(word):
b = True
while (b ==True):
letter+=GetLettre() #Erreur ici
print("Mot: ", getMaskedWord(word, letter))
main()
#Variabled + start
word = pickWord()
main(word)
Bonne journée, OmeGaFire_
A voir également:
- Problème pendu...
- Jeu du pendu - Télécharger - Vie quotidienne
- Télécharger jeu du pendu gratuit - Télécharger - Jeux vidéo
1 réponse
Bonsoir,
Essais avec un "global letter"
ou alors rajoutes letter en paramètre de ta fonction main.
Ton problème est expliqué ici :
https://python.developpez.com/faq/?page=Questions-Python#J-ai-ce-message-UnboundLocalError-local-variable-referenced-before-assignment-Ca-veut-dire-quoi
D'ailleurs tu n'as pas besoins de rappeler main à la ligne 7 ici puisque tu es dans une boucle while. Sinon tu rappelles main qui exécute la boucle while et qui appelle à nouveau main pour ensuite etc ..
Après avoir résolu ce problème il y en a un autre, il manque une variable lors de l'appel de la fonction getMaskedWord.
Tu peux aussi te passer de la fonction getWords et pickWord, initialiser wordsList après letter et ainsi affecter à word choice(wordsList)
En espérant t'avoir aidé,
Bonne soirée !
Essais avec un "global letter"
def main(word):
global letter
[...]
ou alors rajoutes letter en paramètre de ta fonction main.
#Initialisation
def main(word, letter):
b = True
while (b ==True):
letter+=GetLettre() #Erreur ici
print("Mot: ", getMaskedWord(word, letter))
main()
main(word, letter)
Ton problème est expliqué ici :
https://python.developpez.com/faq/?page=Questions-Python#J-ai-ce-message-UnboundLocalError-local-variable-referenced-before-assignment-Ca-veut-dire-quoi
D'ailleurs tu n'as pas besoins de rappeler main à la ligne 7 ici puisque tu es dans une boucle while. Sinon tu rappelles main qui exécute la boucle while et qui appelle à nouveau main pour ensuite etc ..
Après avoir résolu ce problème il y en a un autre, il manque une variable lors de l'appel de la fonction getMaskedWord.
TypeError: getMaskedWord() missing 1 required positional argument: 'testLettre'
Tu peux aussi te passer de la fonction getWords et pickWord, initialiser wordsList après letter et ainsi affecter à word choice(wordsList)
#Mots pendu
wordsList = [
"peinture",
"ecran",
"montagne",
"carte",
"python",
"balle",
"clavier",
"espoir",
"volant",
"carton",
"couteau",
"fiche",
"feuille",
"travail",
"sciences",
"scandale",
"canard",
"utile",
]
[ ... ]
#Variabled + start
word = choice(wordsList)
En espérant t'avoir aidé,
Bonne soirée !
#Initialisation def main(word, letter): b = True while(b): getLettre = GetLettre() letter += getLettre print("Mot: ", getMaskedWord(word, letter, getLettre)) main(word, letter)