Bonjour,
Écrire une fonction qui déchiffre une phrase (donnée en argument) qui a été chiffrée par le programme précédent connaissant la clé (donnée en argument).
Votre script doit comporter en dernière ligne le code test suivant qui affiche le renvoi de votre fonction :
print(nom_de_votre_fontion("PAZZQL-YAU GZ BAUZF P'MBBGU, QF GZ XQHUQD, VQ EAGXQHQDMU XQ YAZPQ", 12))
def cesarC(message, shift):
message = message.lower()
secret = ""
for c in message:
if c.isalpha():
num = ord(c)
num += shift
if num > ord("z"):
num -= 26
elif num < ord("a"):
num += 26
secret += chr(num)
else:
secret += c
return secret
def supprime_accent(chaine):
accent = ['é', 'è', 'ê', 'à', 'ù', 'û', 'ç', 'ô', 'î', 'ï', 'â']
sans_accent = ['e', 'e', 'e', 'a', 'u', 'u', 'c', 'o', 'i', 'i', 'a']
for i in range(len(accent)):
chaine = chaine.replace(accent[i], sans_accent[i])
return chaine
def warppercesarC(mot, cle):
mot = mot.lower()
mot = supprime_accent(mot)
mots = mot.split(" ")
final = ""
for mot in mots:
final += " " + cesarC(mot, - cle)
return final
print(warppercesarC("PAZZQL-YAU GZ BAUZF P'MBBGU, QF GZ XQHUQD, VQ EAGXQHQDMU XQ YAZPQ", 12))
Écrire une fonction qui décrypte une phrase (donnée en argument) qui a été chiffrée par le programme précédant sans connaître la clé qui a été utilisée.
Pour réussir ce défi, voir l’article de Wikipédia sur l’analyse fréquentielle : https://goo.gl/9xYCjs
Votre script doit comporter en dernière ligne le code test suivant qui affiche le renvoi de votre fonction :
print(nom_de_votre_fontion ("BU KLZ ZLJYLAZ KB IVUOLBY LZA KL KLTHUKLY ILHBJVBW H ZVP-TLTL LA WLB HBE HBAYLZ."))
def cesarC(message, shift):
message = message.lower()
secret = ""
for c in message:
if c.isalpha():
num = ord(c)
num += shift
if num > ord("z"):
num -= 26
elif num < ord("a"):
num += 26
secret += chr(num)
else:
secret += c
return secret
def supprime_accent(chaine):
accent = ['é', 'è', 'ê', 'à', 'ù', 'û', 'ç', 'ô', 'î', 'ï', 'â']
sans_accent = ['e', 'e', 'e', 'a', 'u', 'u', 'c', 'o', 'i', 'i', 'a']
for i in range(len(accent)):
chaine = chaine.replace(accent[i], sans_accent[i])
return chaine
def warppercesarC(mot, cle):
mot = mot.lower()
mot = supprime_accent(mot)
mots = mot.split(" ")
final = ""
for mot in mots:
final += " " + cesarC(mot, - cle)
return final
message = "BU KLZ ZLJYLAZ KB IVUOLBY LZA KL KLTHUKLY ILHBJVBW H ZVP-TLTL LA WLB HBE HBAYLZ."
nombre = 0
possible = ""
Bcle = 0
for i in range(1, 26):
Npossible = warppercesarC(message, i)
Nnombre = Npossible.count("e")
if Nnombre > nombre:
nombre = Nnombre
possible = Npossible
print("[...] nouvelle possibilitée choisie : " + possible + "(score :" + str(nombre) + ")")
Bcle = i
print("Meilleur possible (" + str(Bcle) + ") : ")
print(possible)
print("Avec un score de " + str(nombre))