Aller au contenu

Le code de César⚓︎

Le codage de César transforme un message en changeant chaque lettre par une autre obtenue par décalage dans l'alphabet de la lettre d'origine. Par exemple, avec un décalage de 3, le 'A' se transforme en 'D', le 'B' en 'E', ..., le 'X' en 'A', le 'Y' en 'B' et le 'Z' en 'C'. Les autres caractères ('!', '?'...) ne sont pas codés et sont simplement recopiés tels quels dans le message codé.

La fonction position_alphabet prend en paramètre un caractère lettre et renvoie la position de lettre dans la chaine de caractères ALPHABET s'il s'y trouve.

Ecrire la fonction cesar qui prend en paramètres une chaîne de caractères message et un nombre entier decalage et renvoie le nouveau message codé avec le codage de César utilisant ce decalage.

Exemples

🐍 Console Python
>>> cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4)
'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'
>>> cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5)
'BONJOUR A TOUS. VIVE LA MATIERE NSI !'
Astuce

👉 Rappel:
On rappelle que pour un entier n positif, n % 26 renvoie le reste dans la division de n par 26.
Voici quelques exemples :

🐍 Console Python
>>> 10 % 26
10
>>> 26 % 26
0
>>> 27 % 26
1
>>> 28 % 26
2
>>> 53 % 26
1
>>> 
Compléter ci-dessous

###
# Testsbksl-nlbksl-nlassert cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4) == 'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !', "Erreur sur ce test"bksl-nlassert cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', 21) == 'BONJOUR A TOUS. VIVE LA MATIERE NSI !', "Erreur sur ce test"bksl-nlassert cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5) == 'BONJOUR A TOUS. VIVE LA MATIERE NSI !', "Erreur sur ce test"bksl-nlbksl-nl# Autres testsbksl-nlbksl-nlassert cesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1) == 'BCDEFGHIJKLMNOPQRSTUVWXYZA'bksl-nlassert cesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 24) == 'YZABCDEFGHIJKLMNOPQRSTUVWX'bksl-nlassert cesar("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 0) == 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'bksl-nlassert cesar("", 7) == ''bksl-nlassert cesar("!?.:", 7) == '!?.:'bksl-nlassert cesar("CESAR", 139) == 'LNBJA'bksl-nlbksl-nl 5/5
ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"bksl-nlbksl-nldef positionpy-undalphabet(lettre) :bksl-nl return ord(lettre) - ord('A')bksl-nlbksl-nldef cesar(message, decalage):bksl-nl resultat = ''bksl-nl for ... in message:bksl-nl if 'A' <= caractere and caractere <= 'Z':bksl-nl indice = (...) % 26bksl-nl resultat = resultat + ALPHABET[indice]bksl-nl else:bksl-nl resultat = ...bksl-nl return resultatbksl-nlbksl-nl# Testsbksl-nlbksl-nlassert cesar('BONJOUR A TOUS. VIVE LA MATIERE NSI !', 4) == 'FSRNSYV E XSYW. ZMZI PE QEXMIVI RWM !'bksl-nlassert cesar('GTSOTZW F YTZX. ANAJ QF RFYNJWJ SXN !', -5) == 'BONJOUR A TOUS. VIVE LA MATIERE NSI !'bksl-nlbksl-nldef cesar(message, decalage):bksl-nl resultat = ''bksl-nl for caractere in message:bksl-nl if 'A' <= caractere and caractere <= 'Z':bksl-nl indice = (positionpy-undalphabet(caractere) + decalage) % 26bksl-nl resultat = resultat + ALPHABET[indice]bksl-nl else:bksl-nl resultat = resultat + caracterebksl-nl return resultatbksl-nlbksl-nl