Annonce

Réduire
Aucune annonce.

Les fonctions et procédures - COURS N°5

Réduire
Ceci est une discussion importante.
X
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • #16
    Merci pour la correction mais je ne comprends pas pourquoi le résultat tu le rend uniquement en majuscules : message.upper(). Quelle en est l'intérêt et surtout ce n'était pas précisé dans l'exposé de l'exercice ?

    D'autres part la non gestion des espaces permet de donner du poids à la cryptologie du texte contrairement à moi qui me suis exercé à la maintenir, pourtant en lui attribuant +1 on obtientrait sur sa valeur ASCII 32 ► 33 donc "!", par contre ici on retrouve un "A" ASCII 65 , pourquoi ?
    D'autres part (je sais cela fait beaucoup de questions), pourquoi ne pas avoir utiliser comme tu le préconisait ord() et chr().

    Désolé de ce harcèlement de questions, mais j'ai besoin de totalement comprendre afin de passer au suivant sereinement. En tout cas, merci encore pour tous.

    Voici un exemple: Je crypte cette phrase : "il ne faut pas que tu crois"
    Crypté :: JMAOFAGBVUAQBTARVFAUVADSPJT
    Décrypté :: ILZNEZFAUTZPASZQUEZTUZCROIS

    On remarque que les espaces sont intégrés par la valeur ASCII 65 de "A", puis elles sont ensuite décodées par la valeur ASCII -1 ► "90" on fait le tour de boucle de l'alphabet d'où en sorti "Z".

    Edit: Je me rends compte que tu n'utilise que la table de l'alphabet et .upper() en majuscule, tu ne prend pas en compte la table ASCII. Mais des explications supplèmentaires seraient bienvenu.
    Dernière modification par DreAmuS, 04 octobre 2015, 12h00.

    Commentaire


    • #17
      C'est un choix personnel que je me suis imposé pour éviter les erreurs d'entrées utilisateur, sur le principe j'utilise le code ASCII mais pour les majuscules, ce qui n'est pas gênant, cependant pour respecter à la lettre l'énoncé, ta solution avec ord et chr est la seule possible avec le modulo 26... Ensuite c'est un exemple, pas un traitement de tous les cas possibles, j'insiste sur le fait que d'autres solutions existent, en prenant une base.

      J'utilise aussi les majuscules car on l'utilise régulièrement pour ce type d'exercice en développement, mais pas forcément en crypto pure.

      Mais dans notre cas, il est plus simple de faire une simple addition et d'éviter le modulo

      Code:
      def crypt(message):
          DECALAGE = 1
          
          result = '' # préparation du résultat final (chaine vide)
          for letter in message:
              result += chr((ord(letter) + DECALAGE)) # on ajoute la lettre cryptée dans result
              
          return result
          
      print(crypt('AP z')) # 'BQ!{'

      Commentaire


      • #18
        Merci encore pour ces explications. Désolé mais j'ai vraiment besoin de comprendre chaque partie, c'est essentiel. La programmation est un outil à multiples facettes et n'en comprendre qu'une nous enlève beaucoup d'opportunités, d'où mon intérêt.

        Je passe à la suivante un peu plus tard. Je suis fatigué, car très peu dormis.

        Commentaire


        • #19
          Désolé mais j'ai vraiment besoin de comprendre chaque partie, c'est essentiel.
          C'est normal ! Ce qui me gêne c'est le peu de temps pour pouvoir répondre correctement, mais si ma réponse te semble suffisante alors c'est parfait, mais faudra pas s'étonner si de temps en temps mes réponses semblent directes et sans la mise en forme

          Commentaire

          Chargement...
          X