Décodage de CESAR en python (3)

« Questions flash »

  • Qu’affiche l’exécution de ce code ?
    def mystery(N):
        assert N > 0
    
        reponse = 0
        while N > 0:
            N = N // 2
            reponse += 1
        return reponse
    
    print(mystery(100))
    
    print(mystery(42))
    
    print(mystery(7))
    
    print(mystery(-42))
  • Que signifie le résultat renvoyé par mystery(N) pour un nombre entier N strictement positif ?

Corrections d’exercices donnés la veille

  • créer ce dictionnaire : {'A' : 0, 'B' : 0, ... , 'Z' : 0}
    • avec une boucle for i in range(26):,
    • en compréhension.
>>> freq = {}
>>> for i in range(26): freq[chr(i+65)] = 0

>>> freq
{'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0, 'F': 0, 'G': 0, 'H': 0, 'I': 0, 'J': 0, 'K': 0, 'L': 0, 'M': 0, 'N': 0, 'O': 0, 'P': 0, 'Q': 0, 'R': 0, 'S': 0, 'T': 0, 'U': 0, 'V': 0, 'W': 0, 'X': 0, 'Y': 0, 'Z': 0}
>>> dico = {chr(i) : i for i in range(65, 91)}
>>> dico
{'A': 65, 'B': 66, 'C': 67, 'D': 68, 'E': 69, 'F': 70, 'G': 71, 'H': 72, 'I': 73, 'J': 74, 'K': 75, 'L': 76, 'M': 77, 'N': 78, 'O': 79, 'P': 80, 'Q': 81, 'R': 82, 'S': 83, 'T': 84, 'U': 85, 'V': 86, 'W': 87, 'X': 88, 'Y': 89, 'Z': 90}
>>> 
  • créer une fonction lit_et_affiche() qui
    • ouvre un fichier texte « texte.txt » (en lecture)
    • l’affiche dans le shell.
def lit_et_affiche(nom):
    with open nom as fichier:
        contenu = fichier.read()
        print(contenu)
        fichier.close()

Suite et fin du TP : décodage de CESAR en python

Automatiquement sur un grand texte par analyse de fréquences

On veut maintenant décoder un fichier enregistré dans le même dossier que notre programme mais en trouvant le décalage par analyse de fréquence :

  • Copier le texte ci-dessous dans un fichier texte.txt ,
  • ouvrir ce fichier et récupérer le contenu dans une chaîne de caractères contenu ,
  • qu’on peut mettre en majuscules avec contenu = contenu.upper(),
  • créer un dictionnaire freq ayant pour clés toutes les lettres majuscules non accentuées et pour valeurs des zéros,
  • parcourir la chaîne contenu et incrémenter à chaque lettre la valeur correspondant à cette clé dans le dictionnaire,
  • rechercher le caractère de l’alphabet le plus fréquent dans contenu : c’est la clé qui a la plus grande valeur dans le dictionnaire freq et elle correspond au caractère « e » dans le texte décodé !
  • en déduire le décalage et décoder à l’aide de la fonction codée la veille !
Xg vkrimhzktiabx, ex vabyykxfxgm itk wxvtetzx, tnllb vhggn vhffx ex vabyykx wx Vxltk hn ex vhwx wx Vxltk (ohbk exl wbyyxkxgml ghfl), xlm ngx fxmahwx wx vabyykxfxgm mkxl lbfiex nmbeblxx itk Cnexl Vxltk wtgl lxl vhkkxlihgwtgvxl lxvkxmxl (vx jnb xqiebjnx ex ghf « vabyykx wx Vxltk »).
Ex mxqmx vabyykx l'humbxgm xg kxfietçtgm vatjnx exmmkx wn mxqmx vetbk hkbzbgte itk ngx exmmkx t wblmtgvx ybqx, mhnchnkl wn fxfx vhmx, wtgl e'hkwkx wx e'teiatuxm. Ihnk exl wxkgbxkxl exmmkxl (wtgl ex vtl w'ng wxvtetzx t wkhbmx), hg kxikxgw tn wxunm. Itk xqxfiex toxv ng wxvtetzx wx 3 oxkl et wkhbmx, T xlm kxfietvx itk W, U wxobxgm X, xm tbglb cnljn't P jnb wxobxgm S, inbl Q wxobxgm T xmv. Be l'tzbm w'ngx ixkfnmtmbhg vbkvnetbkx wx e'teiatuxm. Et ehgznxnk wn wxvtetzx, 3 wtgl e'xqxfiex xohjnx, vhglmbmnx et vex wn vabyykxfxgm jn'be lnyybm wx mktglfxmmkx tn wxlmbgtmtbkx — l'be ltbm wxct jn'be l'tzbm w'ng vabyykxfxgm wx Vxltk — ihnk jnx vxenb-vb inbllx wxvabyykxk ex fxlltzx. Wtgl ex vtl wx e'teiatuxm etmbg, ex vabyykx wx Vxltk g't jnx 26 vexl ihllbuexl (r vhfikbl et vex gneex, jnb gx fhwbybx itl ex mxqmx).

Be l'tzbm w'ng vtl itkmbvnebxk wx vabyykxfxgm itk lnulmbmnmbhg fhghteiatuxmbjnx : vxl lnulmbmnmbhgl kxihlxgm lnk ng ikbgvbix tgtehznx, ftbl lhgm humxgnxl itk wxl ixkfnmtmbhgl jnxevhgjnxl wxl exmmkxl wx e'teiatuxm. Wtgl ex vtl zxgxkte, et vex xlm whggxx itk et ixkfnmtmbhg, xm ex ghfukx wx vexl ihllbuexl xlm tehkl ltgl vhffngx fxlnkx toxv vxenb wxl vabyykxfxgml wx Vxltk.

Ex vabyykxfxgm wx Vxltk t in xmkx nmbeblx vhffx xexfxgm w'ngx fxmahwx ienl vhfiexqx, vhffx ex vabyykx wx Obzxgxkx. Lxne, be g'hyykx tnvngx lxvnkbmx wx vhffngbvtmbhg, t vtnlx wn mkxl ytbuex ghfukx wx vexl, vx jnb ixkfxm w'xlltrxk lrlmxftmbjnxfxgm vxeexl-vb jntgw et fxmahwx wx vabyykxfxgm xlm vhggnx, ftbl tnllb itkvx jnx, vhffx mhnm xgvhwtzx itk lnulmbmnmbhg fhghteiatuxmbjnx, be ixnm xmkx mkxl ktibwxfxgm « vtllx » itk tgterlx wx ykxjnxgvxl (vxkmtbgxl exmmkxl tiitktbllxgm uxtnvhni ienl lhnoxgm jnx exl tnmkxl wtgl ngx etgznx gtmnkxeex).

Pour demain, essayer de continuer , on reprendra après avec la suite de notre « projetLaby » pour la journée « Portes Ouvertes » de samedi 14 😉

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.