Pendu python:
Résolu/FerméAcnologiaf Messages postés 11 Date d'inscription samedi 21 janvier 2023 Statut Membre Dernière intervention 30 octobre 2023 - 30 oct. 2023 à 18:27
- Pendu python:
- Jeu du pendu - Télécharger - Vie quotidienne
- Citizen code python avis - Accueil - Outils
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
3 réponses
Modifié le 30 oct. 2023 à 03:05
Bonjour,
Si tu ne sais pas utiliser le débogueur, le plus simple est sans doute de mettre des print pour voir l'état de tes variables à chaque tour de boucle.
Mais pour faire court, l'erreur vient d'une mauvaise compréhension de ce que font tes boucles. Si guess = "mt", sela signifie que ta 2e boucle for (ligne 6) sera exécutée un coup pour "m" et un autre coup pour "t", et donc chaque caractère de ton mot sera traité 2 fois (une fois comparé avec "m", une fois comparé avec "t").
Dans ton cas, il faut donc plutôt vérifier dans quelle mesure la lettre courante de mot est ou non dans guess. En python, il y a un opérateur précisément fait pour ce test : in.
En pseudo code :
Pour chaque lettre de mot
Si cette lettre est dans guess:
Afficher lettre
Sinon
Afficher x
Si tu ne veux pas utiliser cet opérateur dans un test, c'est plus compliqué, mais ça reste faisable (et c'est ce qu'on ferait dans un autre langage de programmation que python). Le test "lettre est dans guess" devient :
(Chercher si lettre est dans guess)
trouvé = FAUX
Pour chaque caractère de guess:
Si lettre == caractère:
trouvé = VRAI
(inutile de continuer à chercher)
(on peut interrompre avec break)
Si trouvé == VRAI:
Traiter le cas "lettre est dans guess"
Sinon:
Traiter le cas "lettre n'est pas dans guess"
Il ne reste alors plus qu'à réunir ces deux bouts de code et à les traduire en python pour résoudre ton exercice.
Bonne chance
30 oct. 2023 à 18:27
Merci pour toutes vos réponses, finalement après avoir réfléchi a vos conseils , je m'en suis sorti avec le script suivant :
from time import sleep mot="" guess="f" coups= 1 mot: str = input("Entrez votre mot :") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") print("") guess: str = input("Trouvez le mot:") while mot != guess: for i in mot: if i in guess: print(i) else: print("x") guess: str = input("Trouvez le mot:") coups = coups + 1 print("Bravo!Vous avez trouvé le mot en " + str(coups) + " coup(s)") sleep(5)
28 oct. 2023 à 13:15
Bonjour
pour bien coder, il faut savoir débboguer.
Certains IDE permettent d'exécuter du code Python en pas à pas.
Si c'est le cas du tien, fais le et reviens nous expliquer ce que tu as compris de l'exécution de ton code.
Si ton IDE ne le permet pas ou si tu ne sais pas comment faire, teste ce code
mot : str= input("Entrez votre mot :") guess: str= input("Trouvez le mot:") for i in mot: print("i",i) for e in guess: print("e",e) if i == e: print(e) else: print("x")
29 oct. 2023 à 21:11
Merci , je ne savais pas que mon IDE avait un débogger, au fait je n'arrive pas a sortir de la deuxieme boucle for et quand bien même je le fais , elle reprend a la première itération