Bonjour, je débute le python et ai voulu m'entrainer à travers le code de césar. J'ai crée un code pour crypter et décrypter des messages, et j'aurait voulu avoir quelque conseils sur la façon de le simplifier car je ne doute pas qu'il y'ai un moyen plus simple de faire ce que j'ai fait. Merci d'avance pour les réponses
def breakAnalyse():
code = str(input("Rentrez un texte à décrypter : "))
tabTempo = [code]
tabLettre = [i for i in tabTempo[0]]
listeCaraProba = ["e","a","i","s","n","r","t","o","l","u","d","c","m","p","é","g","b","v","h","f","q","y","x","j","è","à","k","w","z","ê","ç","ô","â","î","û","ù","ï","ü","ë","ö","í"]
listeProba = [12.10,7.11,6.59,6.51,6.39,6.07,5.92,5.02,4.96,4.49,3.67,3.18,2.62,2.49,1.94,1.23,1.14,1.11,1.11,1.11,0.65,0.46,0.38,0.34,0.31,0.31,0.29,0.17,0.15,0.08,0.06,0.04,0.03,0.03,0.02,0.02,0.01,0.01,0.01,0.01,0.01]
probaLettreTexte = []
for lettreCaraProba in listeCaraProba:
counter = 0
for lettre in tabLettre:
if lettre == lettreCaraProba:
counter += 1
pourcentage = round((counter/len(tabLettre))*100,2)
probaLettreTexte += [pourcentage]
# print("Il y'a ",pourcentage, "% de ",i, "dans ce texte")
print("\n\n\n",probaLettreTexte)
posBigOccu = probaLettreTexte.index(max(probaLettreTexte))
decalage = ord(listeCaraProba[posBigOccu])-ord(listeCaraProba[0])
unCesar(code, decalage)
def unCesar(code, cle): #Fait la fct de dessus et la retransforme avec le code. Pour donner en facteur le phrase codé, suppr l. 31 et replace clair par code.
tabTempo = [code]
tabLettre = [i for i in tabTempo[0]]
listeCara = [u for u in range(97,123)]
listeCara += [u for u in range(65,91)]
clair = " "
for i in range(0,len(tabLettre)):
valable = 0
ordLettreTempo = ord(tabLettre[i]) - cle
for c in range(len(listeCara)):
if ord(tabLettre[i]) == listeCara[c]:
valable = 1
if valable == 1:
if ord(tabLettre[i])>=97 and ordLettreTempo>=97 and ordLettreTempo <=122: #mniuscule
clair += chr(ordLettreTempo)
elif ord(tabLettre[i]) <= 90 and ordLettreTempo>=65 and ordLettreTempo<=90: #majuscule
clair += chr(ordLettreTempo)
elif ordLettreTempo<97 and ordLettreTempo>90:
clair += chr(122-(97-(ord(tabLettre[i])-cle)))
else:
clair += chr(90-(65-(ord(tabLettre[i])-cle)))
else:
clair += tabLettre[i]
print(clair, " \ncode césar : ", cle,"\n")
def cesar():
clair = str(input("Entrez un texte à traduire : "))
cle = int(input("Entrez la cle : "))
tabTempo = [clair]
tabLettre = [i for i in tabTempo[0]]
listeCara = [u for u in range(97,123)]
listeCara += [u for u in range(65,91)]
chiffre = " "
if cle > 26:
while cle > 26:
cle = cle - 26
for i in range(0,len(tabLettre)):
valable = 0
ordLettreTempo = ord(tabLettre[i]) + cle
for c in range(len(listeCara)): #Verifie si fait partie de l'alphabet : si oui, code la lettre avc la cle, sinon, ne le code pas.
if ord(tabLettre[i]) == listeCara[c]:
valable = 1
if valable == 1:
if ord(tabLettre[i])>=97 and ordLettreTempo<=122: #minu en minu
chiffre += chr(ordLettreTempo)
elif ordLettreTempo>122 and ord(tabLettre[i])>=97: #minu qui est trop grande
chiffre += chr(97+(ordLettreTempo-122))
elif ord(tabLettre[i])<=90 and ordLettreTempo>=90: #maju qui est trop grande
chiffre+= chr(65+(ordLettreTempo-90))
elif ord(tabLettre[i])<=90 and ordLettreTempo<=90: #maju en maju
chiffre += chr(ordLettreTempo)
else:
print("\nErreur pour la lettre ", tabLettre[i], "\n")
else:
chiffre += tabLettre[i]
print("Le message codé est : ", chiffre)
return chiffre
(Je n'utilise pas les variables listeCaraProba et listeProba; je les avait crées mais n'ai pas su comment les utiliser)
× 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.
Découverte Python Doc Tkinter Les chaînes de caractères