Les outils de base
Les outils PYTHON utilisés :
texte="hello world"
# Transformer un texte en en liste
ListeLettres=list(texte)
print(ListeLettres)
# Transformer une liste en un texte
string=""
Phrase=string.join(ListeLettres)
print(Phrase)
# Obtenir une liste de nombres à la place des lettres
ListeLettresChiffrees=[]
for lettre in ListeLettres :
ListeLettresChiffrees.append(ord(lettre))
print(ListeLettresChiffrees)
# Obtenir une liste de nombres à la place des lettres
ListeLettres=[]
for nombre in ListeLettresChiffrees :
ListeLettres.append(chr(nombre))
print(ListeLettres)
# On transforme ces outils en fonctions
def LireTexte(texte):
return list(texte)
def LireListeLettres(liste):
string=""
Phrase=string.join(liste)
return Phrase
def TransformeLettreNombre(ListeLettres):
ListeLettresChiffrees=[]
for lettre in ListeLettres :
ListeLettresChiffrees.append(ord(lettre))
return ListeLettresChiffrees
def TransformeNombreLettre(ListeLettresChiffrees):
ListeLettres=[]
for nombre in ListeLettresChiffrees :
ListeLettres.append(chr(nombre))
return ListeLettres
def demo():
phrase="hello world"
print(phrase)
ListeLettres=LireTexte(phrase)
print(ListeLettres)
ListeLettresChiffrees=TransformeLettreNombre(ListeLettres)
print(ListeLettresChiffrees)
ListeLettres2=TransformeNombreLettre(ListeLettresChiffrees)
print(ListeLettres2)
print(LireListeLettres(ListeLettres2))
demo()
cle=6
# On prend en compte la ponctuation , les majuscules et les minuscules.
#On ne prend pas en compte les accents.
def Listecode1(texte,cle):
"code César qui fonctionne par décalage des lettres de l'alphabet"
ListeLettres=LireTexte(texte)
ListeLettresChiffrees=TransformeLettreNombre(ListeLettres)
ListeCodee=[]
for element in ListeLettresChiffrees:
if 97<= element <= 122-cle: ListeCodee.append(element+cle) # Les minuscules
elif 122-cle< element<123: ListeCodee.append(element+cle-26)
elif 65<= element <= 90-cle: ListeCodee.append(element+cle) # Les majuscules
elif 90-cle<element<91 : ListeCodee.append(element+cle-26)
else : ListeCodee.append(element) # Le reste du monde
ListeLettres2=TransformeNombreLettre(ListeCodee)
TexteCode=LireListeLettres(ListeLettres2)
return TexteCode
def demo2(texte):
print(Listecode1(texte,6))
texte="hello world"
demo2(texte)
# Pour décoder
def ListeDeCode1(texte,cle):
assert 0<cle<27
"code César qui fonctionne par décalage des lettres de l'alphabet"
ListeLettres=LireTexte(texte)
ListeLettresChiffrees=TransformeLettreNombre(ListeLettres)
ListeCodee=[]
for element in ListeLettresChiffrees:
if 97+cle<= element <= 122: ListeCodee.append(element-cle) # Les minuscules
elif 96 < element<97+cle: ListeCodee.append(element-cle+26)
elif 65+cle<= element <= 90: ListeCodee.append(element-cle) # Les majuscules
elif 64<element<65+cle : ListeCodee.append(element-cle+26)
else : ListeCodee.append(element) # Le reste du monde
ListeLettres2=TransformeNombreLettre(ListeCodee)
TexteDeCode=LireListeLettres(ListeLettres2)
return TexteDeCode
ListeDeCode1("nkrru cuxrj",6)
for cle in range(1,27) :
print(ListeDeCode1("nkrru cuxrj",cle))
Décoder le message situé dans le fichier source : messageCode.txt
Il s'agit d'un cryptage par décalage.
fichier = open("messageCode.txt", "r")
texte=fichier.read()
print(texte)
def liste_lettres(texte):
liste=LireTexte(texte)
dico_lettres={}
for lettre in liste:
if lettre in dico_lettres.keys():
dico_lettres[lettre]=dico_lettres[lettre]+1
else : dico_lettres[lettre]=1
return dico_lettres
def freq_lettres(dico_lettres):
ListeValeurs=dico_lettres.values()
total=sum(ListeValeurs)
freq_lettres={}
for car in dico_lettres.keys():
freq_lettres[car]=dico_lettres[car]/total
return freq_lettres
def freqLettre(DictionnaireFrequence,char):
ListeLettres=DictionnaireFrequence.keys()
if char in ListeLettres:
return DictionnaireFrequence[char]
else : return 0
dico_Lettres=liste_lettres(texte)
dico_freq_lettres=freq_lettres(dico_Lettres)
dico_freq_lettres