Skip to content

TP4. nirPrfne

Énoncé

Le mardi, c'est cryptographie. Dans ce TP nous nous intéressons au chiffrement par décalage. Cette méthode, aussi connue sous le nom de "chiffre de César" ou encore rotx était utilisée par l'empereur pour ne pas être "sniffé" par la poste impériale.

Le principe est très simple comme l'illustre le schéma ci-dessous. Une lettre est transformée par un décalage / une rotation d'une certaine quantité (3 sur le schéma) vers la droite dans l'ordre alphabétique. Lorsque l'on arrive à la fin de l'alphabet, c'est à dire sur Z on recommence au début, c'est à dire sur A. Les minuscules restent des minuscules, et les majuscules restent des majuscules.


exemple de décalage de 3

L'objectif de ce TP est double :

  • s'entraîner à la lecture de documentation d'interface de programmation ;
  • faire connaissance avec monsieur ASCII et madame UNICODE.

Votre travail consiste tout d'abord à implémenter les deux fonctions du module rotx dont le squelette vous est fourni ici et affiché ci dessous.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
"""Module d'encodage/décodage par rotation"""

def rot(decalage, lettre):
    """Renvoie la lettre donnée encodée par rotation.

    Le décalage utilisé pour la rotation est spécifié en paramètre.
    Préconditions :
       - lettre est une chaîne de caractère de taille 1 ;
       - lettre est un soit une lettre majuscule
         soit une lettre minuscule.
    """
    # TODO
    ...

def rot13(lettre):
    """Encode la lettre donnée par rotation de 13 caractères.

    Préconditions :
       - lettre est une chaîne de caractères de taille 1.
    """
    # TODO
    ...

Nous vous demandons de vérifier les préconditions et de renvoyer None si celles-ci ne sont pas vérifiées.

Ensuite, vous devrez réaliser un programme decodeur_nom_tp.py qui effectue les opérations suivantes :

  • demande à l'utilisateur de saisir un nom de fichier et crée un fichier portant ce nom dans le répertoire courant (écrasement si fichier déjà existant) ;
  • utilise le module rotx pour décoder chacune des lettres du nom de ce TP (nirPrfne) et écrit le résultat dans le fichier créé à l'étape précédente ;
  • affiche sur la sortie standard votre prénom encodé par un décalage de 4 en utilisant un seul appel à la fonction print et sans variable.

Vous aurez besoin de lire les pages d'aide concernant les mots clefs et les fonctions ci-dessous :

  • chr aide disponible avec help(chr)
  • ord aide disponible avec help(ord)
  • print aide disponible avec help(print)
  • input aide disponible avec help(input)
  • open aide disponible avec help(open)

Cliquez ici pour révéler la correction.

Correction

Une correction détaillée en vidéo est disponible :

Difficulté

star star star star

Exercices associés