Remplacer Caractère par Underscore à partir d'un mot aléatoire
Bonjour à tous, je dois réaliser un pendu et je bute sur une des questions
Code:
1 2 3 4 5 6 7 8 9
| import random
mots = ["chien", "chat", "radiometrie", "photogrammetrie", "geodesie", "bibliotheque", "panier", "television"]
def select_word (mots):
return random.choice(mots)
print("Le mot sélectionné est: ",select_word (mots))
chosen_word = (select_word (mots))
print =(len (chosen_word)) |
Je dois sélectionner un mot dans une liste prédéfinie et ensuite je dois remplacer le mot par des underscores et séparer chaque lettre par "." et j'ai interdiction de mettre un point en début et fin de chaine.
Si je prends l'exemple du mot chat, j'aimerais retourner cela "_._._._", 4 underscores qui correspondent aux 4 lettres qui composent le mot chat et des points séparant chacun des caractères.
Mon problème est que mes résultats ne correspondent entre eux, exemple :
si le mot aléatoire est chien
Python comptabilise de manière aléatoire 12 caractères alors qu'il devrait en comptabiliser 5 logiquement ?
Quelqu'un pourrait-il m'aider svp ?
Pendu : créer une fonction ajoutant au fur et à mesure les bonnes lettres
J'avance sur mon projet du pendu et j'arrive au bout, pour l'instant je peux ajouter une lettre et compléter mon pendu mais je ne sais comment tester une deuxième lettre puis une troisième,etc...
Ci-dessous mon code qui fonctionne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| import random
if __name__ == "__main__":
mots = ["couteau", "pain", "pince", "clou", "bonbon", "sac", "panier", "cahier"]
def select_word (mots):
return random.choice(mots)
chosen_word = select_word(mots)
print("Le mot sélectionné est: ",chosen_word)
letter_1 = "a"
def reveal_letter (letter_1,chosen_word):
return (".".join(x if x in letter_1 else "_" for x in chosen_word))
hidden_word = reveal_letter (letter_1,chosen_word)
print(hidden_word) |
Ci-dessous la question à la quelle, je dois répondre
Proposez une fonction play(liste_mots) qui permet de jouer. Cette fonction doit :
• Permettre de jouer jusqu’à ce que le joueur ait trouvé toutes les lettres ou jusqu’à ce qu’il ait
fait 6 erreurs ;
• Après chaque proposition de lettre, imprimer en console l’état d’avancement du jeu, à savoir
le dessin du « pendu » ainsi que
le mot en cours sous la forme « _._.o._._ » ;
• Si le player a perdu, la fonction s’arrête, indique au player qu’il a perdu et lui donne le mot
qu’il fallait deviner ;
• Si le player a gagné, la fonction s’arrête et félicite le player et rappelle le mot
Je pensais à utiliser une boucle for ou while afin de jouer jusqu'à 6 reprises, ensuite j'aurais aimé ajouter un système boléen afin d'indiquer au joueur si le mot est bon ou pas, pour le dessin du pendu j'ai pu récupérer ce code sur internet, qu'en pensez-vous ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| p0 = ["""
o
""",
"""
o
|
""",
"""
_o
|
""",
"""
_o_
|
""",
"""
_o_
|
/
""",
"""
_o_
|
/ \\
"""] |