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
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)
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
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
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
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)
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.
× 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.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique