IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Pendu


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 1
    Par défaut Pendu
    Bonjour à tous et à toutes

    Pour notre projet d'ISN, nous avons décidé de réaliser un pendu en python
    Seulement, nous avons un problème que nous n'arrivons pas à régler et nous voulions savoir si vous pouvez nous aider.
    Voici le programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    from random import*
     
    deja_dit=[0]*26
    indice=0
     
     
    def selection_mot():
    	print("Le joueur meneur choisit un mot EN MAJUSCULE")
    	erreur = 0
    	mot_recherche=input()
    	lettres = list(mot_recherche)
    	for indice in range(len(mot_recherche)):
    		if ord(lettres[indice]) <=57 and ord(lettres[indice])>=48 or ord(lettres[indice])>90:
    			erreur += 1
    	if erreur > 0:
    		print("Ce mot n'est pas valide")
    		selection_mot()
    	elif len(mot_recherche) < 4:
    		print("Le mot est trop petit")
    		selection_mot()
    	elif len(mot_recherche) > 27:
    		print("le mot est trop grand")
    		selection_mot()
     
    	else:	
    		return lettres
     
    def proposition():	
     
    	lettre = input()
    	if len(lettre)>1 or ord(lettre)<=57 and ord(lettre)>=48 or ord(lettre)>90:
    		print("Ce n'est pas une lettre")
    	elif lettre in deja_dit:
    		("Cette lettre à déjà été proposée")
    		proposition()
    	elif lettre not in lettres:
    		erreurs += 1
    		print("Cette lettre n'appartient pas au mot !")
    		deja_dit[marmelade]=lettre
    		marmelade+=1
    		return
    	else:
    		print("Cette lettre appartient bien au mot !")
    		deja_dit[indice]=lettre
    		indice+=1
    		return
     
     
    selection_mot()
    proposition()
    Et le message d'erreur qui nous est envoyé :

    Traceback (most recent call last):
      File "C:\Users\hiroe\Desktop\ISN\pendu.py", line 72, in <module>
        proposition()
      File "C:\Users\hiroe\Desktop\ISN\pendu.py", line 55, in proposition
        elif lettre not in lettres:
    NameError: name 'lettres' is not defined
    Voilà, et merci beaucoup d'avance !

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Le message d'erreur dit juste que lettres n'est pas défini.
    Peut être qu'il serait judicieux de récupérer ce que retourne (parfois) la fonction selection_mot et de le passer en paramètre à proposition.
    Et si vous ne comprenez rien à tout çà, ouvrez un tuto. et réviser fonctions et portée des variables.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Pourquoi la fonction "selection_mot()" s'appelle-t-elle elle-même ? Est-ce parce que vous ne savez pas coder une boucle que vous la simulez en passant par la récursivité ??? Un peu lamentable quand on en est au stade du projet non ? Et c'est une récursivité d'autant plus riche quelle est perdue vu que le sous-appel récursif n'est ni récupéré, ni traité.

    Accessoirement vous traitez (de façon bien maladroite) le fait que les lettres du mot choisi sont dans la plage '0' à '9' ou au dessous de 'Z' mais pas qu'elles sont au dessus de 'A'...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 253
    Par défaut
    Bonjour,

    Pourquoi indiquer dans le prompt qu'il faut saisir le mot à trouver EN MAJUSCULE.
    Laissez les utilisateurs (meneur, joueur) saisir les mots et lettres comme ils le veulent et c'est le code qui s'occupe de gérer ces saisies en majuscules ('abc'.upper())

    Pour vérifier la validité des mots et lettres saisies, vous pouvez vérifier que chaque lettre est dans string.ascii_uppercase

Discussions similaires

  1. Le jeu du pendu.
    Par giggs dans le forum C
    Réponses: 5
    Dernier message: 31/10/2006, 13h40
  2. jeu du pendu
    Par krachik dans le forum Langage
    Réponses: 5
    Dernier message: 24/10/2006, 12h48
  3. Jeux du pendu
    Par trans13 dans le forum C
    Réponses: 6
    Dernier message: 04/09/2006, 11h07
  4. 3 petites images pendues au papier
    Par Tchamps dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 4
    Dernier message: 01/09/2006, 22h37
  5. Réponses: 4
    Dernier message: 24/03/2006, 13h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo