Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pendu

Quels modifications pourraient être apportées ?

    23 novembre 2019 à 17:00:23

    print("Donner un mot")
    mot = input()
    
    caché = ["*"]* len(mot)
    longueur = len(caché)
    alphabet = [1] * 27
    vie = 3
    print(caché)
    
    while vie > 0:
    
            présence = 0
            lettre = input()
    
            if alphabet[(ord(lettre)-96)] == 0:
                    print("Vous avez déjà demander cette lettre")
            else:
                    alphabet[(ord(lettre)-96)]= 0
                    for loop in range(len(mot)):
                            if mot[loop] == lettre:
                                    caché[loop] = lettre
                                    longueur -= 1
                                    présence = 1
            if présence == 0:
                    vie -=1
                    print(vie)
    
            print("".join(caché), end = "")
    
            if longueur == 0:
                    break
    

    Voici mon code en python pour créer un pendu de manière assez basique, avez vous quelles modifications pourraient être apporté ( mais en restant dans ce style de programme, plutôt simpliste, sans  le "complexifier". Ex: simplifier la forme du programme en simplifiant certaines boucles ou test ce genre de chose ^^)

    Merci d'avance pour vos conseil ^^'

    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2019 à 21:14:08

      Bonsoir,

      • Pas d'accent dans les variables !
      • éviter range(len(...)) et utiliser enumerate
      • Les constantes en majuscule
      • mieux que if longueur == 0, utiliser if not longueur, idem pour présence et sans accent !
      • diminuer la complexité de l'algorithme
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        23 novembre 2019 à 22:06:06

        Merci beaucoup pour ta réponse, comment marche enumerate? Et en quoi la présence d'accent dans les variables peut-être gênante (juste pour comprendre le fonctionnement, pas que je doute en tes conseils).

        Et je vais suivre le conseil d'Einstein "pose une question et tu seras bêtes une seconde, ne la pose pas et tu sera bête toute ta vie" : qu'est ce qu'une "constante", j'avoue ne pas avoir le souvenir d'avoir vu ce terme dans les cours que j'ai pu lire ^^

        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2019 à 22:39:44

          Pourquoi ne pas se servir de mes mots clés pour faire une recherche, afin d'éviter d'écrire ce qui a été écris des millions de fois ?
          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            23 novembre 2019 à 22:48:00

            C'est ce que je compte faire mais je trouve logique d'expliquer les choses lorsque l'on conseille / corrige les personnes. Enfin c'est un simple avis, donc personnel après à chacun ça façon de voir les choses et de faire les choses ^^
            • Partager sur Facebook
            • Partager sur Twitter
              23 novembre 2019 à 23:22:31

              Eh bien faîtes votre recherche et si vous pouvez prouver le contraire, j'expliquerai pourquoi ces remarques.

              Les choses sont expliquées dans les tutoriels, il faut prendre le temps de les lire pour ajouter à vos compétences de la culture.

              • Partager sur Facebook
              • Partager sur Twitter

              Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
              La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

                23 novembre 2019 à 23:36:20

                Ton programme est plutôt correct, il marche, c'est déjà ça et tu as compris la logique. Mais ça reste améliorable.

                • Le point le plus gênant je trouve est de travailler avec des caractères via leur code ASCII (tes (ord(lettre)-96).
                • J'évite les identificateurs avec des lettres non ascii, ça pourrait poser des problèmes de portabilité et les accents sont propres à une langue. Mais je pourrais m'y faire.
                • Pour gérer les lettres déjà proposées, fais tout simplement un if lettre in temptemp est ton mot en cours de découverte
                • Si tu veux un code plus pythonnique, tu peux utiliser enumerate, voir ici (c'est justement un pendu mais en Tkinter).
                • Pourquoi end = " ?
                • Le premier affichage du mot est non pertinent (tu affiches une liste).

                Tu peux :

                • améliorer l'interface et l'interactivité
                • gérer les exceptions que ton code lève
                • éviter le break final
                • gérer les majuscules et les minuscules voire les accents dans le mot à découvrir
                • continuer le jeu qui reste très partiel

                Il serait possible aussi d'utiliser un dictionnaire qui répertorie les indices des lettres du mot inconnu. Ça t'évite la boucle for. Mais pour un programme aussi simple qu'un pendu, je ne sais pas si vaut la peine.

                • Partager sur Facebook
                • Partager sur Twitter
                  24 novembre 2019 à 0:10:34

                  Merci beaucoup pour ta réponse PascalOrtiz, je m'y pencherai plus en détail (notamment avec le liens que tu as fournis) un peu plus tard ^^ !
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Pendu

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown