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 :

Amélioration de mon "pendu".


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 64
    Par défaut Amélioration de mon "pendu".
    Bonjour à tous,

    J'ai fais un petit pendu qui tourne presque rond. Je crois qu'il y a un soucis avec la boucle pour le menu, parce que le script ne sort pas lorsqu'on à joué et qu'on répond ; "non" à la question, si oui ou non on aimerait bien rejouer...

    De plus j'aimerais y apporter quelques améliorations

    - permettre au joueur d'entrer la solution du mot et si la solution n'est pas juste, le programme compte une chance en moins.

    - le joueur ne peut entrer plusieurs fois la même lettre.

    - ajouter de nouveaux mots au fichier "motsPendu"

    Voilà

    Merci de m'aider et de me donner des pistes...

    Comme vous le voyez, le code n'est pas très évolué et fait avec les bases de Python. J'aimerais rester dans ce style, donc pas de fonctions compliquées etc.. ^^ Je n'y comprendrais plus rien..

    Un grand merci !

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 64
    Par défaut
    Citation Envoyé par tonykart13 Voir le message
    Bonjour à tous,

    J'ai fais un petit pendu qui tourne presque rond. Je crois qu'il y a un soucis avec la boucle pour le menu, parce que le script ne sort pas lorsqu'on à joué et qu'on répond ; "non" à la question, si oui ou non on aimerait bien rejouer...

    De plus j'aimerais y apporter quelques améliorations

    - permettre au joueur d'entrer la solution du mot et si la solution n'est pas juste, le programme compte une chance en moins.

    - le joueur ne peut entrer plusieurs fois la même lettre.

    - ajouter de nouveaux mots au fichier "motsPendu"

    Voilà

    Merci de m'aider et de me donner des pistes...

    Comme vous le voyez, le code n'est pas très évolué et fait avec les bases de Python. J'aimerais rester dans ce style, donc pas de fonctions compliquées etc.. ^^ Je n'y comprendrais plus rien..

    Un grand merci !
    EDIT : J'ai oublié de mettre le code !

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    # import ---------------------------------------
     
    from random import randrange # fonction randrange du module random
     
    # ------------- fonctions ----------------------
     
    def lireMot(nLigne):
        'lecture du mot à partir du nombre aléatoire'
        oFich = open('motsPendu','r') # création objet fichier
        i = 0
        while i <= nLigne :
            mot = oFich.readline() # lecture de la ligne
            i+=1
        oFich.close()
        return (mot[:-1]) # lecture du mot sans le caractère "aller à la ligne"
     
    def afficheMot(mot,listeBolet,listeMalet):
        'affiche le mot en fonction des lettres trouvées'
        print('\n')
        for car in mot : # pour car dans mot
            if car in listeBolet :
                print(car,end='')
            else :
                print('*',end='')
        print('\n')
        if len(listeMalet) > 0 :
            print('Mauvaises lettres : ', end='')
            for elem in listeMalet :
                print(elem,' ',end='')
        print('\n')
     
    # ------------- programme principal ----------------
     
    print('# --------------- PENDU --------------- #')
    print('-----------------------------------------')
    print('1 - Jouer.')
    print('2 - Ajouter un nouveau mot au répertoire.')
    print('3 - Quitter')
    print('-----------------------------------------')
    choix = input('Votre choix : ')
     
    maxChance = 5
    repCont = 'Y' # valeur par défaut pour continuer à jouer
     
    while 1 :
        if choix == '1' :
            while repCont == 'Y' :
                print('\n')
                print('*** LE PENDU ***')
                nbLignMot = randrange(850) # ...
                motSecret = lireMot(nbLignMot)
                lisGoodLet = []
                lisBadLet = []
                nbChance = 0
                while 1 :
                    afficheMot(motSecret,lisGoodLet,lisBadLet)
                    lettre = input('Entrez une lettre : ')
                    if lettre[0] in motSecret :
                        lisGoodLet.append(lettre[0]) # 0 car on ne prend que la première lettre
                        good = True
                        for car in motSecret :
                            if car not in lisGoodLet :
                                good = False
                        if good == True :
                            print('Vous avez gagné !')
                            break;
                    else :
                        lisBadLet.append(lettre[0])
                        nbChance+=1
                        if nbChance == maxChance :
                            print ('Vous avez perdu ! Le mot était : ',motSecret)
                            break;
                repCont = input('Voulez-vous rejouer ? (Y) (N) ')
                repCont = repCont.upper() # pour afficher en majuscules
            print ('\n')
            print('Merci pour votre participation !');
     
        elif choix == '3':
            print('Aurevoir !')
            break;
    Bien à vous !

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    pourquoi as-tu une liste pour les "bonnes lettres" et une liste pour les "mauvaises" ?
    les bonnes lettres sont celles du mot à trouver,les mauvaises toutes les autres ...

    si le mot est 'hello' et que le joueur propose un 'm', il perd un essai; s'il est distrait et propose à nouveau un 'm' il perd encore un essai. A quoi sert de mémoriser 'm' comme étant une mauvaise lettre ?

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    - le joueur ne peut entrer plusieurs fois la même lettre.
    C'est plus simple que de lire un fichier par exemple pour en retirer tous les mots, non?

    - permettre au joueur d'entrer la solution du mot et si la solution n'est pas juste, le programme compte une chance en moins.
    Que ferais-tu?

    - ajouter de nouveaux mots au fichier "motsPendu"
    L'ajouter dans ton fichier txt?

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Ajouter à une liste juste les lettres ne se trouvant pas dans une liste, c'est une simple condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def ajouter(lettre, liste):
        if lettre not in liste:
            liste.append(lettre)
     
    # test
     
    ma_liste = ["a",  "c",  "p"]
    ajouter("d",  ma_liste)
    ajouter("c",  ma_liste)
    print(ma_liste)
    Pour le compteur, beaucoup de solution, en voilà une, simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    def compter(my_solution,  user_solution,  counter):
        if my_solution != user_solution:
            counter -= 1
        return counter
     
    # test
     
    solution = "test"
    compteur = 5
    compteur = compter(solution,  "t",  compteur)
    compteur = compter(solution,  "te",  compteur)
    compteur = compter(solution,  "test",  compteur)
     
    print(compteur)

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Ajouter à une liste juste les lettres ne se trouvant pas dans une liste, c'est une simple condition
    plus simple en changeant de container ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ma_liste = set("acp")
    ma_liste |= set("d")
    ma_liste |= set("c")
    print(ma_liste)
    >>> {'a', 'p', 'c', 'd'}

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 64
    Par défaut
    Voilà j'ai encore un peu travaillé sur le programme mais je n'arrive pas à faire un petit truc..

    ==> Quand l'utilisateur croît connaître le mot mais qu'il est faux, le programme doit compter une erreure mais il ne le fait pas...

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    # -*- coding: utf-8 -*-
    # import ---------------------------------------
     
    from random import randrange # fonction randrange du module random
     
    # ------------- fonctions ----------------------
     
    def lireMot(nLigne):
        'lecture du mot à partir du nombre aléatoire'
        oFich = open('motsPendu.txt','r') # création objet fichier
        i = 0
        while i <= nLigne :
            mot = oFich.readline() # lecture de la ligne
            i+=1
        oFich.close()
        return (mot[:-1]) # lecture du mot sans le caractère "aller à la ligne"
     
    def afficheMot(mot,listeBolet,listeMalet):
        'affiche le mot en fonction des lettres trouvées'
        print('\n')
        for car in mot : # pour car dans mot
            if car in listeBolet :
                print(car,end='')
            else :
                print('*',end='')
        print('\n')
        if len(listeMalet) > 0 :
            print('Mauvaises lettres : ', end='')
            for elem in listeMalet :
                print(elem,' ',end='')
        print('\n')
     
    def ajouterMot(nouvMot):
        oFichier = open('motsPendu.txt', 'a')
        oFichier.write(nouvMot.upper()+'\n')
        oFichier.close()
     
    # ------------- programme principal ----------------
    while 1 :
        print('# --------------- PENDU --------------- #')
        print('-----------------------------------------')
        print('1 - Jouer.')
        print('2 - Ajouter un nouveau mot au répertoire.')
        print('3 - Quitter')
        print('-----------------------------------------')
        choix = input('Votre choix : ')
     
        maxChance = 8
        repCont = 'Y' # valeur par défaut pour continuer à jouer
     
        if choix == '1' :
            while repCont == 'Y' :
                print('\n')
                print('*** LE PENDU ***')
                print('Tapez "QUITTER" ou "quitter" pour sortir du jeu !')
                nbLignMot = sum(1 for line in open('motsPendu.txt', 'r'))
                nbLignMot = randrange(nbLignMot) # ...
                motSecret = lireMot(nbLignMot)
                lisGoodLet = []
                lisBadLet = []
                nbChance = 0
     
                while 1 :
                    afficheMot(motSecret,lisGoodLet,lisBadLet)
                    lettre = input('Entrez une lettre : ').upper()
                    if lettre == motSecret :
                        good = True
                        if good == True :
                            print('Vous avez gagné !')
                            break;
                    elif lettre == "" or lettre in "0123456789":
                        print("/!\ VEUILLEZ ENTRER UNE LETTRE /!\ ")
     
                    elif lettre == "quitter" or lettre == "QUITTER" :
                        break;
     
                    elif lettre[0] in motSecret :
                        if lettre[0] in lisGoodLet :
                            print('Vous avez déjà essayé cette lettre.')
                        else :
                            lisGoodLet.append(lettre[0]) # 0 car on ne prend que la première lettre
                            good = True
                        for car in motSecret :
                            if car not in lisGoodLet :
                                good = False
                        if good == True :
                            print('Vous avez gagné !')
                            break;
     
                    else :
                        if lettre[0] in lisBadLet :
                            print ('Vous avez déjà essayé cette lettre.')
                        else :
                            lisBadLet.append(lettre[0])
                            nbChance+=1
                        if nbChance == maxChance :
                            print ('Vous avez perdu ! Le mot était : ',motSecret)
     
                            break;
                repCont = input('Voulez-vous rejouer ? (Y) - (N) : ')
                repCont = repCont.upper() # pour afficher en majuscules
     
            print ('\n')
            print ('Merci pour votre participation !')
            print ('\n');
     
        elif choix == '2':
            while repCont == 'Y' :
                print ('\n')
                newMot = input('Mot à ajouter à la liste : ')
                ajouterMot(newMot)
                print ('Le mot a été ajouté avec succès.')
                repCont = input('Un autre mot ? (Y) - (N) : ')
                repCont = repCont.upper()
                print ('\n')
     
        elif choix == '3':
            print('Aurevoir !')
            break;
    Merci d'y jeter un coup d'oeil !

    Tk13

  8. #8
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Peux pas tester pas de fichier ...txt (pas la force d'en chercher un )
    Jette un coup d'oeil aux <Edit>
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    # -*- coding: utf-8 -*-
    # import ---------------------------------------
     
    from random import randrange # fonction randrange du module random
     
    # ------------- fonctions ----------------------
     
    def lireMot(nLigne):
        'lecture du mot à partir du nombre aléatoire'
        oFich = open('motsPendu.txt','r') # création objet fichier
        i = 0
        while i <= nLigne :
            mot = oFich.readline() # lecture de la ligne
            i+=1
        oFich.close()
        return (mot[:-1]) # lecture du mot sans le caractère "aller à la ligne"
     
    def afficheMot(mot,listeBolet,listeMalet):
        'affiche le mot en fonction des lettres trouvées'
        print('\n')
        for car in mot : # pour car dans mot
            if car in listeBolet :
                print(car,end='')
            else :
                print('*',end='')
        print('\n')
        if len(listeMalet) > 0 :
            print('Mauvaises lettres : ', end='')
            for elem in listeMalet :
                print(elem,' ',end='')
        print('\n')
     
    def ajouterMot(nouvMot):
        oFichier = open('motsPendu.txt', 'a')
        oFichier.write(nouvMot.upper()+'\n')
        oFichier.close()
     
    # ------------- programme principal ----------------
    while 1 :
        print('# --------------- PENDU --------------- #')
        print('-----------------------------------------')
        print('1 - Jouer.')
        print('2 - Ajouter un nouveau mot au répertoire.')
        print('3 - Quitter')
        print('-----------------------------------------')
        choix = input('Votre choix : ')
     
        maxChance = 8
        repCont = 'Y' # valeur par défaut pour continuer à jouer
     
        if choix == '1' :
            while repCont == 'Y' :
                print('\n')
                print('*** LE PENDU ***')
                print('Tapez "QUITTER" ou "quitter" pour sortir du jeu !')
                nbLignMot = sum(1 for line in open('motsPendu.txt', 'r'))
                nbLignMot = randrange(nbLignMot) # ...
                motSecret = lireMot(nbLignMot)
                lisGoodLet = []
                lisBadLet = []
                nbChance = 0
     
                while 1 :
                    afficheMot(motSecret,lisGoodLet,lisBadLet)
                    lettre = input('Entrez une lettre : ').upper()
                    """if lettre == motSecret :
                        good = True
                        if good == True :
                            print('Vous avez gagné !')
                            break;
                    """
                    ##Start edit 1:
                    #on compte le mot entier uniquement pour la meme longueur (je suppose)
                    if len(lettre) == len(motSecret):
                        if lettre==motSecret:
                            good = True
                            #good étant un booléen, pas la peine ==True
                            if good:
                                print('Vous avez gangé !')
                                break;
                        else:
                            nbChance += 1
                    ##End edit 1
     
                    elif lettre == "" or lettre in "0123456789":
                        print("/!\ VEUILLEZ ENTRER UNE LETTRE /!\ ")
     
                    elif lettre == "quitter" or lettre == "QUITTER" :
                        break;
     
                    elif lettre[0] in motSecret :
                        if lettre[0] in lisGoodLet :
                            print('Vous avez déjà essayé cette lettre.')
                        else :
                            lisGoodLet.append(lettre[0]) # 0 car on ne prend que la première lettre
                            good = True
                        for car in motSecret :
                            if car not in lisGoodLet :
                                good = False
                        if good == True :
                            print('Vous avez gagné !')
                            break;
     
                    else :
                        if lettre[0] in lisBadLet :
                            print ('Vous avez déjà essayé cette lettre.')
                        else :
                            lisBadLet.append(lettre[0])
                            nbChance+=1
                    ##Start edit 2
                    #vu que l'on modifie nbChance autre part que dans ce else, on doit
                    #le remonter d'un bloc (dédenter)
                    if nbChance == maxChance :
                        print ('Vous avez perdu ! Le mot était : ',motSecret)
                        break;
                    ##End edit 2
                repCont = input('Voulez-vous rejouer ? (Y) - (N) : ')
                repCont = repCont.upper() # pour afficher en majuscules
     
            print ('\n')
            print ('Merci pour votre participation !')
            print ('\n');
     
        elif choix == '2':
            while repCont == 'Y' :
                print ('\n')
                newMot = input('Mot à ajouter à la liste : ')
                ajouterMot(newMot)
                print ('Le mot a été ajouté avec succès.')
                repCont = input('Un autre mot ? (Y) - (N) : ')
                repCont = repCont.upper()
                print ('\n')
     
        elif choix == '3':
            print('Aurevoir !')
            break;
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 64
    Par défaut
    Bonjour

    Merci pour ta réponse mais je n'arrive pas à faire ce que je veux avec tes edits... Je veux juste modifier le programme pour qu'il ajoute une erreure lorsque le mot rentré est faux et qu'il ajoute ce mot à la liste des "mauvaises lettres"...

    Voici mon fichier texte :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    537
    538
    539
    540
    541
    542
    543
    544
    545
    546
    547
    548
    549
    550
    551
    552
    553
    554
    555
    556
    557
    558
    559
    560
    561
    562
    563
    564
    565
    566
    567
    568
    569
    570
    571
    572
    573
    574
    575
    576
    577
    578
    579
    580
    581
    582
    583
    584
    585
    586
    587
    588
    589
    590
    591
    592
    593
    594
    595
    596
    597
    598
    599
    600
    601
    602
    603
    604
    605
    606
    607
    608
    609
    610
    611
    612
    613
    614
    615
    616
    617
    618
    619
    620
    621
    622
    623
    624
    625
    626
    627
    628
    629
    630
    631
    632
    633
    634
    635
    636
    637
    638
    639
    640
    641
    642
    643
    644
    645
    646
    647
    648
    649
    650
    651
    652
    653
    654
    655
    656
    657
    658
    659
    660
    661
    662
    663
    664
    665
    666
    667
    668
    669
    670
    671
    672
    673
    674
    675
    676
    677
    678
    679
    680
    681
    682
    683
    684
    685
    686
    687
    688
    689
    690
    691
    692
    693
    694
    695
    696
    697
    698
    699
    700
    701
    702
    703
    704
    705
    706
    707
    708
    709
    710
    711
    712
    713
    714
    715
    716
    717
    718
    719
    720
    721
    722
    723
    724
    725
    726
    727
    728
    729
    730
    731
    732
    733
    734
    735
    736
    737
    738
    739
    740
    741
    742
    743
    744
    745
    746
    747
    748
    749
    750
    751
    752
    753
    754
    755
    756
    757
    758
    759
    760
    761
    762
    763
    764
    765
    766
    767
    768
    769
    770
    771
    772
    773
    774
    775
    776
    777
    778
    779
    780
    781
    782
    783
    784
    785
    786
    787
    788
    789
    790
    791
    792
    793
    794
    795
    796
    797
    798
    799
    800
    801
    802
    803
    804
    805
    806
    807
    808
    809
    810
    811
    812
    813
    814
    815
    816
    817
    818
    819
    820
    821
    822
    823
    824
    825
    826
    827
    828
    829
    830
    831
    832
    833
    834
    835
    836
    837
    838
    839
    840
    841
    842
    843
    844
    845
    846
    847
    848
    849
    850
     
    JAZZ
    BUZ
    ANGLE
    ARMOIRE
    BANC
    BUREAU
    CABINET
    CARREAU
    CHAISE
    CLASSE
    CLEF
    COIN
    COULOIR
    DOSSIER
    EAU
    ECOLE
    ENTRER
    ESCALIER
    ETAGERE
    EXTERIEUR
    FENETRE
    INTERIEUR
    LAVABO
    LIT
    MARCHE
    MATELAS
    MATERNELLE
    MEUBLE
    MOUSSE
    MUR
    PELUCHE
    PLACARD
    PLAFOND
    PORTE
    POUBELLE
    RADIATEUR
    RAMPE
    RIDEAU
    ROBINET
    SALLE
    SALON
    SERRURE
    SERVIETTE
    SIEGE
    SIESTE
    SILENCE
    SOL
    SOMMEIL
    SONNETTE
    SORTIE
    TABLE
    TABLEAU
    TABOURET
    TAPIS
    TIROIR
    TOILETTE
    VITRE
    ALLER
    AMENER
    APPORTER
    APPUYER
    ATTENDRE
    BAILLER
    COUCHER
    DORMIR
    ECLAIRER
    EMMENER
    EMPORTER
    ENTRER
    FERMER
    FRAPPER
    INSTALLER
    LEVER
    OUVRIR
    PRESSER
    RECHAUFFER
    RESTER
    SONNER
    SORTIR
    VENIR
    ABSENT
    ASSIS
    BAS
    HAUT
    PRESENT
    GAUCHE
    DROITE
    DEBOUT
    DEDANS
    DEHORS
    FACE
    LOIN
    PRES
    TARD
    TOT
    APRES
    AVANT
    CONTRE
    DANS
    DE
    DERRIERE
    DEVANT
    DU
    SOUS
    SUR
    CRAYON
    STYLO
    FEUTRE
    MINE
    GOMME
    DESSIN
    COLORIAGE
    RAYURE
    PEINTURE
    PINCEAU
    COULEUR
    CRAIE
    PAPIER
    FEUILLE
    CAHIER
    CARNET
    CARTON
    CISEAUX
    DECOUPAGE
    PLIAGE
    PLI
    COLLE
    AFFAIRE
    BOITE
    CASIER
    CAISSE
    TROUSSE
    CARTABLE
    JEU
    JOUET
    PION
    DOMINO
    PUZZLE
    CUBE
    PERLE
    CHOSE
    FORME
    CARRE
    ROND
    PATE
    MODELER
    TAMPON
    LIVRE
    HISTOIRE
    BIBLIOTHEQUE
    IMAGE
    ALBUM
    TITRE
    CONTE
    DICTIONNAIRE
    MAGAZINE
    CATALOGUE
    PAGE
    LIGNE
    MOT
    ENVELOPPE
    ETIQUETTE
    CARTE
    APPEL
    AFFICHE
    ALPHABET
    APPAREIL
    CAMESCOPE
    CASSETTE
    CHAINE
    CHANSON
    CHIFFRE
    CONTRAIRE
    DIFFERENCE
    DOIGT
    ECRAN
    ECRITURE
    FILM
    FOIS
    FOI
    IDEE
    INSTRUMENT
    INTRUS
    LETTRE
    LISTE
    MAGNETOSCOPE
    MAIN
    MICRO
    MODELE
    MUSIQUE
    NOM
    NOMBRE
    ORCHESTRE
    ORDINATEUR
    PHOTO
    POINT
    POSTER
    POUCE
    PRENOM
    QUESTION
    RADIO
    SENS
    TAMBOUR
    TELECOMMANDE
    TELEPHONE
    TELEVISION
    TRAIT
    TROMPETTE
    VOIX
    XYLOPHONE
    ZERO
    CHANTER
    CHERCHER
    CHOISIR
    CHUCHOTER
    COLLER
    COLORIER
    COMMENCER
    COMPARER
    COMPTER
    CONSTRUIRE
    CONTINUER
    COPIER
    COUPER
    DECHIRER
    DECOLLER
    DECORER
    DECOUPER
    DEMOLIR
    DESSINER
    DIRE
    DISCUTER
    ECOUTER
    ECRIRE
    EFFACER
    ENTENDRE
    ENTOURER
    ENVOYER
    FAIRE
    FINIR
    FOUILLER
    GOUTER
    IMITER
    LAISSER
    LIRE
    METTRE
    MONTRER
    OUVRIR
    PARLER
    PEINDRE
    PLIER
    POSER
    PRENDRE
    PREPARER
    RANGER
    RECITER
    RECOMMENCER
    REGARDER
    REMETTRE
    REPETER
    REPONDRE
    SENTIR
    SOULIGNER
    TAILLER
    TENIR
    TERMINER
    TOUCHER
    TRAVAILLER
    TRIER
    AMI
    ATTENTION
    CAMARADE
    COLERE
    COPAIN
    COQUIN
    DAME
    DIRECTEUR
    DIRECTRICE
    DROIT
    EFFORT
    ELEVE
    ENFANT
    FATIGUE
    FAUTE
    FILLE
    GARCON
    GARDIEN
    MADAME
    MAITRE
    MAITRESSE
    MENSONGE
    ORDRE
    PERSONNE
    RETARD
    JOUEUR
    SOURIRE
    TRAVAIL
    AIDER
    DEFENDRE
    DESOBEIR
    DISTRIBUER
    ECHANGER
    EXPLIQUER
    GRONDER
    OBEIR
    OBLIGER
    PARTAGER
    PRETER
    PRIVER
    PROMETTRE
    PROGRES
    PROGRESSER
    PUNIR
    QUITTER
    RACONTER
    EXPLIQUER
    REFUSER
    SEPARER
    BLOND
    BRUN
    CALME
    CURIEUX
    DIFFERENT
    DOUX
    ENERVER
    GENTIL
    GRAND
    HANDICAPE
    INSEPARABLE
    JALOUX
    MOYEN
    MUET
    NOIR
    NOUVEAU
    PETIT
    POLI
    PROPRE
    ROUX
    SAGE
    SALE
    SERIEUX
    SOURD
    TRANQUILLE
    ARROSOIR
    ASSIETTE
    BALLE
    BATEAU
    BOITE
    BOUCHON
    BOUTEILLE
    BULLES
    CANARD
    CASSEROLE
    CUILLERE
    CUVETTE
    DOUCHE
    ENTONNOIR
    GOUTTES
    LITRE
    MOULIN
    PLUIE
    POISSON
    PONT
    POT
    ROUE
    SAC
    PLASTIQUE
    SALADIER
    SEAU
    TABLIER
    TASSE
    TROUS
    VERRE
    AGITER
    AMUSER
    ARROSER
    ATTRAPER
    AVANCER
    BAIGNER
    BARBOTER
    BOUCHER
    BOUGER
    DEBORDER
    DOUCHER
    ECLABOUSSER
    ESSUYER
    ENVOYER
    COULER
    PARTIR
    FLOTTER
    GONFLER
    INONDER
    JOUER
    LAVER
    MELANGER
    MOUILLER
    NAGER
    PLEUVOIR
    PLONGER
    POUSSER
    POUVOIR
    PRESSER
    RECEVOIR
    REMPLIR
    RENVERSER
    SECHER
    SERRER
    SOUFFLER
    TIRER
    TOURNER
    TREMPER
    VERSER
    VIDER
    VOULOIR
    AMUSANT
    CHAUD
    FROID
    HUMIDE
    INTERESSANT
    MOUILLE
    SEC
    TRANSPARENT
    MOITIE
    AUTANT
    BEAUCOUP
    ENCORE
    MOINS
    PEU
    PLUS
    TROP
    ANORAK
    ARC
    BAGAGE
    BAGUETTE
    BARBE
    BONNET
    BOTTE
    BOUTON
    BRETELLE
    CAGOULE
    CASQUE
    CASQUETTE
    CEINTURE
    CHAPEAU
    CHAUSSETTE
    CHAUSSON
    CHAUSSURE
    CHEMISE
    CIGARETTE
    COL
    COLLANT
    COURONNE
    CRAVATE
    CULOTTE
    ECHARPE
    EPEE
    FEE
    FLECHE
    FUSIL
    GANT
    HABIT
    JEAN
    JUPE
    LACET
    LAINE
    LINGE
    LUNETTES
    MAGICIEN
    MAGIE
    MAILLOT
    MANCHE
    MANTEAU
    MOUCHOIR
    MOUFLE
    NOEUD
    PAIRE
    PANTALON
    PIED
    POCHE
    PRINCE
    PYJAMA
    REINE
    ROBE
    ROI
    RUBAN
    SEMELLE
    SOLDAT
    SOCIERE
    TACHE
    TAILLE
    TALON
    TISSU
    TRICOT
    UNIFORME
    VALISE
    VESTE
    VETEMENT
    CHANGER
    CHAUSSER
    COUVRIR
    DEGUISER
    DESHABILLER
    ENLEVER
    HABILLER
    LACER
    PORTER
    RESSEMBLER
    CLAIR
    COURT
    ETROIT
    FONCE
    JOLI
    LARGE
    LONG
    MULTICOLORE
    NU
    USE
    BIEN
    MAL
    MIEUX
    PRESQUE
    AIGUILLE
    AMPOULE
    AVION
    BOIS
    BOUT
    BRICOLAGE
    BRUIT
    CABANE
    CARTON
    CLOU
    COLLE
    CROCHET
    ELASTIQUE
    FICELLE
    FIL
    MARIONNETTE
    MARTEAU
    METAL
    METRE
    MORCEAU
    MOTEUR
    OBJET
    OUTIL
    PEINTURE
    PINCEAU
    PLANCHE
    PLATRE
    SCIE
    TOURNEVIS
    VIS
    VOITURE
    ARRACHER
    ATTACHER
    CASSER
    COUDRE
    DETRUIRE
    ECORCHER
    ENFILER
    ENFONCER
    FABRIQUER
    MESURER
    PERCER
    PINCER
    REPARER
    REUSSIR
    SERVIR
    TAPER
    TROUER
    TROUVER
    ADROIT
    DIFFICILE
    DUR
    FACILE
    LISSE
    MALADROIT
    POINTU
    TORDU
    ACCIDENT
    AEROPORT
    CAMION
    ENGIN
    FEU
    FREIN
    FUSEE
    GARAGE
    GARE
    GRUE
    HELICOPTERE
    MOTO
    PANNE
    PARKING
    PILOTE
    PNEU
    QUAI
    TRAIN
    VIRAGE
    VITESSE
    VOYAGE
    WAGON
    ZIGZAG
    ARRETER
    ATTERRIR
    BOUDER
    CHARGER
    CONDUIRE
    DEMARRER
    DISPARAITRE
    DONNER
    ECRASER
    ENVOLER
    GARDER
    GARER
    MANQUER
    PARTIR
    POSER
    RECULER
    ROULER
    TENDRE
    TRANSPORTER
    VOLER
    ABIME
    ANCIEN
    BLANC
    BLEU
    CASSE
    CINQ
    DERNIER
    DEUX
    DEUXIEME
    DIX
    GRIS
    GROS
    HUIT
    JAUNE
    MEME
    NEUF
    PAREIL
    PREMIER
    QUATRE
    ROUGE
    SEPT
    SEUL
    SIX
    SOLIDE
    TROIS
    TROISIEME
    UN
    VERT
    DESSUS
    AUTOUR
    VITE
    VERS
    ACROBATE
    ARRET
    ARRIERE
    BARRE
    BARREAU
    BORD
    BRAS
    CERCEAU
    CHAISE
    CHEVILLE
    CHUTE
    COEUR
    CORDE
    CORPS
    COTE
    COU
    COUDE
    CUISSE
    DANGER
    DOIGTS
    DOS
    ECHASSES
    ECHELLE
    EPAULE
    EQUIPE
    ESCABEAU
    FESSE
    FILET
    FOND
    GENOU
    GYMNASTIQUE
    HANCHE
    JAMBE
    JEU
    MAINS
    MILIEU
    MONTAGNE
    MUR
    ESCALADE
    MUSCLE
    NUMERO
    ONGLE
    PARCOURS
    PAS
    PASSERELLE
    PENTE
    PEUR
    PIED
    PLONGEOIR
    POIGNET
    POING
    PONT
    SIGNE
    SINGE
    POUTRE
    EQUILIBRE
    PRISE
    RIVIERE
    CROCODILE
    ROULADE
    PIROUETTE
    SAUT
    SERPENT
    SPORT
    SUIVANT
    TETE
    TOBOGGAN
    TOUR
    TRAMPOLINE
    TUNNEL
    VENTRE
    ACCROCHER
    APPUYER
    ARRIVER
    BAISSER
    BALANCER
    BONDIR
    BOUSCULER
    COGNER
    COURIR
    DANSER
    DEPASSER
    DESCENDRE
    ECARTER
    ESCALADER
    GAGNER
    GENER
    GLISSER
    GRIMPER
    MARCHER
    PATTES
    DEBOUT
    MONTER
    MONTRER
    PENCHER
    PERCHER
    PERDRE
    RAMPER
    RATER
    REMPLACER
    RESPIRER
    RETOURNER
    REVENIR
    SAUTER
    SOULEVER
    SUIVRE
    TOMBER
    TRANSPIRER
    TRAVERSER
    DANGEUREUX
    EPAIS
    FORT
    GROUPE
    IMMOBILE
    ROND
    SERRE
    SOUPLE
    ENSEMBLE
    ICI
    JAMAIS
    TOUJOURS
    SOUVENT
    BAGARRE
    BALANCOIRE
    BALLON
    BANDE
    BICYCLETTE
    BILLE
    CAGE
    ECUREUIL
    CERF
    VOLANT
    CHATEAU
    COUP
    COUR
    COURSE
    ECHASSE
    FLAQUE
    EAU
    PAIX
    PARDON
    PARTIE
    PEDALE
    PELLE
    POMPE
    PREAU
    RAQUETTE
    RAYON
    RECREATION
    SABLE
    SIFFLET
    SIGNE
    TAS
    TRICYCLE
    TUYAU
    VELO
    FILE
    RANG
    BAGARRER
    BATTRE
    CACHER
    CRACHER
    CREUSER
    CRIER
    DEGONFLER
    DISPUTE
    EMPECHER
    GALOPER
    HURLER
    JONGLER
    LANCER
    PEDALER
    PLAINDRE
    PLEURER
    POURSUIVRE
    PROTEGER
    SAIGNER
    SALIR
    SIFFLER
    SURVEILLER
    TRAINER
    TROUVER
    FOU
    MECHANT
    DIPLODOCUS
    INSTITUTRICE
    CERVEAU
    PILIER
    MEDECIN
    ELECTROMECANICIEN
    VITRIER
    LAMPADAIRE
    WEBCAM
    CHIRURGIEN
    VACHE
    CUBE
    Bien à vous !
    Tk13

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Merci pour ta réponse mais je n'arrive pas à faire ce que je veux avec tes edits
    Il y a une explication à cela.

    Tout d'abord c'est ton algorithme et donc c'est pas forcément évident de s'insérer dans l'algo de quelqu'un comme cela.

    Tes questions doivent être plus précises et qui puis est avec un code fonctionnel. A ce niveau, faire un pendu n'est pas complexe si ton algo est lui aussi pas complexe.

    Plus tu te prends la tête dans ton algo, plus tu vas prendre la tête des personnes qui t'aident.

    Exemple de quelquechose de flagrant et que afranck64 n'a pas vu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if len(lettre) == len(motSecret):
                        if lettre==motSecret:
                            good = True
                            #good étant un booléen, pas la peine ==True
                            if good:
                                print('Vous avez gangé !')
                                break;
                        else:
                            nbChance += 1
    On pourrait éviter quelques lignes inutiles

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if len(lettre) == len(motSecret):
                        if lettre==motSecret:
                            print('Vous avez gangé !')
                            break
                        else:
                            nbChance += 1
    Commence par un algo naïf, en découpant ton travail en fonction.

    Par exemple :

    fonction mot_hasard(file_input) qui va rechercher le mot au hasard dans file_input.

    etc...

    Car en gros ce que tu demandes ici, c'est que la personne aidante rentre dans ta tête. Les personnes t'aidant ont une expérience, un automatisme, des bonnes habitudes, ... et n'ont pas du tout la même façon de voir les choses qu'un débutant.

    A éviter :

    Les boucles while 1 ou while True, car tu risques de créer une boucle infinie, et donc rendre ton code indébuggable (je sais pas si ça se dit).

    Les print inutiles, du genre, t'as gagné ou perdu, et ajouter des print sur des vérifications à faire, comme la sortie d'une fonction, pour vérifier qu'elle fait bien son travail.

    Les conditions :

    Eh bien elles sont simples, avant d'attaquer un projet on apprend les bases.

    On apprend pas les additions sans apprendre ses tables ou compter sur ses doigts, eh bien c'est pareil pour python.

    Les règles :

    Pour la lisibilité du code, il y a on va dire une norme de bonnes habitudes pour écrire un code, c'est la PEP8.

    L'anglais :

    Que tu le veuilles ou non, quelquesoit le langage il reste inévitable, et donc un possible apprentissage supplémentaire, mais ça vaut le coup.

    Bon courage

  11. #11
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    ...Exemple de quelquechose de flagrant et que afranck64 n'a pas vu...
    Je crois que je perds de mon "répondant"
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

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