- #!/usr/bin/python
- # -*- coding:Utf-8 -*-
- from string import upper
-
- class Crypto:
- """Cryptage utilisant le chiffre de césar
- ch = chaine, d = décalage"""
- def __init__(self, ch, d):
- self.ch, self.d = ch, d
- #On initialise les dictionnaires. Correspondance pour crypter, decorrespondance pour décoder
- self.correspondance = {}
- self.decorrespondance = {}
-
- #On construit les listes. alpha = alphabet normal. ald = alphabet avec le décalage
- self.alpha = [chr(x) for x in xrange(97, 123)]
- self.ald = [self.alpha[(i+self.d)%26] for i in xrange(26)] #Utilisation du modulo pour éviter le OutOfRange
- #Construction de correspondance
- for x in xrange(26):
- self.correspondance[self.alpha[x]] = self.ald[x]
-
- def inverser_dico(self):
- """Construction du dictionnaire decorrespondance en inversant clé/valeur de correspondance afin d'accéder à la traduction"""
- for (k, v) in self.correspondance.items():
- self.decorrespondance[v] = k
- return self.decorrespondance
-
- def code(self, p):
- """Coder et décoder le texte"""
- self.new_ch = []
- self.inverser_dico()
- for car in self.ch:
- if car is ' ':
- self.new_ch.append(' ')
- else:
- if p is True:
- self.new_ch.append(self.correspondance[car])
- else:
- self.new_ch.append(self.decorrespondance[car])
-
- return self.new_ch
-
- if __name__ == "__main__":
- while 1:
- chx = raw_input("Voulez (C)rypter ou (D)écrypter votre texte : ")
- if chx.upper() == 'C':
- x = True
- elif chx.upper() == 'D':
- x = None
- else:
- print "Mauvais choix !"
- break
-
- decalage = raw_input("De combien de lettres voulez vous décaler votre code : ")
- if decalage.isdigit():
- txt = raw_input("Veuillez entrer votre texte :\n")
- a = Crypto(txt.lower(), int(decalage))
- else:
- print "Vous devez entrer un nombre !"
- break
-
- try:
- a.code(x)
- print ''.join(a.code(x))
- except:
- print "Vous ne devez rentrer que des lettres !"
- break
-
- r = raw_input("Autre texte à coder ( 1: Oui, Entrée: Non ) : ")
- if r == '1':
- continue
- else:
- break
#!/usr/bin/python
# -*- coding:Utf-8 -*-
from string import upper
class Crypto:
"""Cryptage utilisant le chiffre de césar
ch = chaine, d = décalage"""
def __init__(self, ch, d):
self.ch, self.d = ch, d
#On initialise les dictionnaires. Correspondance pour crypter, decorrespondance pour décoder
self.correspondance = {}
self.decorrespondance = {}
#On construit les listes. alpha = alphabet normal. ald = alphabet avec le décalage
self.alpha = [chr(x) for x in xrange(97, 123)]
self.ald = [self.alpha[(i+self.d)%26] for i in xrange(26)] #Utilisation du modulo pour éviter le OutOfRange
#Construction de correspondance
for x in xrange(26):
self.correspondance[self.alpha[x]] = self.ald[x]
def inverser_dico(self):
"""Construction du dictionnaire decorrespondance en inversant clé/valeur de correspondance afin d'accéder à la traduction"""
for (k, v) in self.correspondance.items():
self.decorrespondance[v] = k
return self.decorrespondance
def code(self, p):
"""Coder et décoder le texte"""
self.new_ch = []
self.inverser_dico()
for car in self.ch:
if car is ' ':
self.new_ch.append(' ')
else:
if p is True:
self.new_ch.append(self.correspondance[car])
else:
self.new_ch.append(self.decorrespondance[car])
return self.new_ch
if __name__ == "__main__":
while 1:
chx = raw_input("Voulez (C)rypter ou (D)écrypter votre texte : ")
if chx.upper() == 'C':
x = True
elif chx.upper() == 'D':
x = None
else:
print "Mauvais choix !"
break
decalage = raw_input("De combien de lettres voulez vous décaler votre code : ")
if decalage.isdigit():
txt = raw_input("Veuillez entrer votre texte :\n")
a = Crypto(txt.lower(), int(decalage))
else:
print "Vous devez entrer un nombre !"
break
try:
a.code(x)
print ''.join(a.code(x))
except:
print "Vous ne devez rentrer que des lettres !"
break
r = raw_input("Autre texte à coder ( 1: Oui, Entrée: Non ) : ")
if r == '1':
continue
else:
break