Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ameliorer mon premier programme

Python

Sujet résolu
    3 décembre 2020 à 15:21:33

    Bonjour, je débute sur Python, j'ai réussi à faire le programme qui suit, il fonctionne mais je voudrai que le résultat s’ insert à chaque fois à un une position aléatoire dans les 5000 premières décimales de phi (je peux les copier coller dans un str ?) je ne trouve pas quelle commande commande utiliser...et si possible j'aimerai aussi que pour "l'espace", python puisse choisir aléatoirement entre 5 nombre pour ne pas que le "26" ne revienne trop souvent... quelqu’un pourrait m'aider ?

    merci beaucoup

    (Pour ceux qui se demandent, comment on sait pour décoder il y a un chiffre ou au nombre, c'est que j'utilise ce logiciel pour écrire rapidement des messages codés que j'envoie par lettre manuscrite donc qui est décodé de manière manuscrite et j'ai créer un deuxieme programme qui créer un clef qui crée une suite de 0 et de 1 pour dire si c'est un chiffre=0 ou un nombre=1. Le but étant donc juste d'ecrire plus vite)

    PS : je suis aux baux arts donc tout ce que je fais n'a pas forcément d’intérêt dans l'univers du C mais pour si...

    text = "abb cc" #message


    res = text[:] #text copy

    for char in "a":
    res = res.replace(char, '0')
    for char in "b":
    res = res.replace(char, '1')
    for char in "c":
    res = res.replace(char, '2')
    for char in "d":
    res = res.replace(char, '3')
    for char in "e":
    res = res.replace(char, '4')
    for char in "f":
    res = res.replace(char, '5')
    for char in "g":
    res = res.replace(char, '6')
    for char in "h":
    res = res.replace(char, '7')
    for char in "i":
    res = res.replace(char, '8')
    for char in "j":
    res = res.replace(char, '9')
    for char in "k":
    res = res.replace(char, '10')
    for char in "l":
    res = res.replace(char, '11')
    for char in "m":
    res = res.replace(char, '12')
    for char in "n":
    res = res.replace(char, '13')
    for char in "o":
    res = res.replace(char, '14')
    for char in "p":
    res = res.replace(char, '15')
    for char in "q":
    res = res.replace(char, '16')
    for char in "r":
    res = res.replace(char, '17')
    for char in "s":
    res = res.replace(char, '18')
    for char in "t":
    res = res.replace(char, '19')
    for char in "u":
    res = res.replace(char, '20')
    for char in "v":
    res = res.replace(char, '21')
    for char in "w":
    res = res.replace(char, '22')
    for char in "x":
    res = res.replace(char, '23')
    for char in "y":
    res = res.replace(char, '24')
    for char in "z":
    res = res.replace(char, '25')
    for char in " ":
    res = res.replace(char, '26')


    print(res)

    -
    Edité par TapisSaintStalle 3 décembre 2020 à 16:12:01

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 décembre 2020 à 15:32:42

      Salut,

      text = "message"
      res = text
      for char in text:
          res = res.replace(char, str(ord(char)-97))
      print(res)


      Edit: programme modifié avec la génération de la clé :

      text = "message"
      key = ""
      res = text
      for char in text:
          if len(str(ord(char)-97)) == 1:
              key += "0"
          else:
              key += "1"
          res = res.replace(char, str(ord(char)-97))
      print(res)
      print(key)



      -
      Edité par Anonyme 3 décembre 2020 à 15:59:49

      • Partager sur Facebook
      • Partager sur Twitter
        3 décembre 2020 à 16:11:12

        Merci Diablo76 c'est génial, le garde comme second projet car c'est beaucoup plus simple mais je peux pas résoudre le problème de "l'espace", j'ai actualisé mon sujet je compte utilisé le programme comme ca car je peux changer à volonté chaque image.

        saurais tu comment je pourrais ajouter ; que le résultat s’ insert à chaque fois à un une position aléatoire dans les 5000 premières décimales de phi (je peux les copier coller dans un str ?) je ne trouve pas quelle commande commande utiliser...et si possible j'aimerai aussi que pour "l'espace", python puisse choisir entre 5 nombre pour ne pas que le "26" ne revienne trop souvent. Plus précisément que pour 5 choix pour "espace" ex ('26','35','94','56','74') à la premiere apparition le programme choisisse '26' au deuxieme espace '35' ainsi de suite pour que ca fasse une boucle qui revienne à '26' a la sixième apparition...

        -
        Edité par TapisSaintStalle 3 décembre 2020 à 16:20:26

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 décembre 2020 à 16:41:47

          Alors voilà un exemple avec le module "random" , ici un choix parmi une liste de 3 valeurs pour l'espace.

          import random
          space = random.choice(["40", "50", "66"])
          text = "abb cc"
          key = ""
          res = text
          for char in text:
              if char == " ":
                res = res.replace(char, space)
              else:
                  if len(str(ord(char)-97)) == 1:
                      key += "0"
                  else:
                      key += "1"
                  res = res.replace(char, str(ord(char)-97))
              
          
          print(res)
          print(key)


          EDIT: Dans l'exemple ci-dessus je ne prends pas en compte la clé pour l'espace mais c'est facile à modifier ;)

          -
          Edité par Anonyme 3 décembre 2020 à 16:48:13

          • Partager sur Facebook
          • Partager sur Twitter
            3 décembre 2020 à 17:05:30

            Ca fonctionne mais random choisi aléatoirement un nombre à chaque fois que le programme est lancé mais s'il y a par exemple 12 espace dans le meme message, il y aura 12x le meme nombre pris aléatoirement par exemple 12x40 qui apparait... est il possible que dans un meme message a chaque apparition de espace son nombre substitution change ?

            -
            Edité par TapisSaintStalle 3 décembre 2020 à 17:06:57

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              3 décembre 2020 à 17:14:09

              Il suffit de déplacer random.

              import random
              #space = random.choice(["40", "50", "66"])
              text = "abb cc"
              key = ""
              res = text
              for char in text:
                  if char == " ":
                    res = res.replace(char, random.choice(["40", "50", "66"]))
                  else:
                      if len(str(ord(char)-97)) == 1:
                          key += "0"
                      else:
                          key += "1"
                      res = res.replace(char, str(ord(char)-97))
                  
              
              print(res)
              print(key)



              • Partager sur Facebook
              • Partager sur Twitter
                3 décembre 2020 à 17:17:33

                derniere question, pouvez vous m'expliquer ces lignes pour que je comprenne... (notamment le "97")

                else:
                if len(str(ord(char) - 97)) == 1:
                key += "0"
                else:
                key += "1"
                res = res.replace(char, str(ord(char) - 97))

                -
                Edité par TapisSaintStalle 3 décembre 2020 à 17:27:50

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  3 décembre 2020 à 17:23:34

                  oui je viens de m'en rendre compte :-° :

                   res = res.replace(char, random.choice(["40", "50", "66", "67", "76"]), 1)

                  ord(a) renvoi la valeur ASCII de a soi 97 donc ord(a) - 97 = 0

                  ord(b) renvoi 98 donc 98 - 97 = 1 etc.....

                  -
                  Edité par Anonyme 3 décembre 2020 à 17:34:07

                  • Partager sur Facebook
                  • Partager sur Twitter
                    4 décembre 2020 à 10:52:36

                    On préférera faire un string.ascii_lowercase.index(char) (du module string) plutôt qu'un ord(char)-97, ça évite de reposer sur de la sorcellerie et des nombres magiques.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Ameliorer mon premier programme

                    × 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