Sagot :
Bonjour
1) Compléter la fonction
Pour faire cet exercice il faut avoir bien compris tout ce qui a été spécifié ci-dessus.
Ci-joint tu trouveras la fonction complété et je vais ici simplement expliquer chaque ligne.
▌L = [s for s in montexte.lower()]
Ici on créé une liste appelée L qui contiendra toutes les lettres du texte rentré en argument de la fonction (montexte).
L'enseignant-e a choisi de mettre "s for s in" mais on aurait pu mettre "lettre for lettre in" ou "truc for truc in", c'est juste un nom qui fait comprendre à Python qu'on vaut passer sur chaque élément de la phrase (= chaque lettre)
.lower() permet de convertir le texte en minuscules (au cas où).
▌chiffrage = ""
C'est simplement la variable qui servira à stocker le résultat final, le message chiffré.
▌for s in L:
On passe sur chaque "s" (donc chaque lettre) de L (la liste créé plus haut)
▌ if (s != " "):
On vérifie si la lettre traité est différente d'un espace (!= veut dire différent de)
▌ chiffrage = chiffrage + str(ord(s) - N)
On ajoute à la variable chiffrage un nouvel élément qui viendra se coller à l'existant (pour l'instant rien: "").
ord(s) nous permet d'objectif le codage de la lettre et - N permet d'effectuer le "décalage" dont l'énoncé parle, qui sera la clé de déchiffrement.
▌ sinon:
▌ chiffrage = chiffrage + "00"
Comme demandé par l'énoncé, si c'est un espace (donc si la condition if, fixée plus haut, n'est pas respectée), on écrit 00 dans le chiffrage.
▌return chiffrage
On renvoie le message une fois chiffré
2) Chiffrer "avec cesar" clé 30
Si tu as refais le code chez toi tu vois que cela donnera:
▌678871006971856784
3) Écrire une fonction dechiffrer(chiffrage, N)
/!\ Limité par le nombre de caractère maximum des réponses, je ne peux pas t'expliquer le code ligne par ligne.
Je te l'ai tout de même mis en pièce-jointe mais si tu as besoin des explications : créé un nouveau devoir qui porte uniquement sur cette question et j'y réponds immédiatement.
Je peux tout de même te partager ma réflexion.
Réflexion
On sait que la fonction va recevoir 2 infos:
- une string contenant des chiffres
- une clef de déchiffrement.
Sauf que tous les numéros sont collés les uns aux autres, pas par duo ou trio facilement déchiffrables.
Il va donc falloir demander à la fonction de traiter les 2 premiers chiffres, ou les 3 premiers chiffres (Consigne: ca peut aller jusqu'à 122) puis de passer aux 2 ou 3 suivants, etc.
4) Déchiffrer le message, clef 28
Une fois que la fonction a été faite tu peux voir que ca donne:
▌je te salue
Si tu as mal compris quelque chose, les commentaires sont là :)