Décryptage du chiffrement triangulaire

PythonPythonBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce projet, vous allez apprendre à décrypter un chiffrement triangulaire, qui est une méthode d'arrangement des caractères en un triangle rectangle. Le message caché est contenu dans le dernier caractère de chaque ligne, et ces derniers caractères sont concaténés pour former l'information transmise.

👀 Aperçu

text = " LcadcbsdxEsdxcx"
decryption_text = "LabEx"

🎯 Tâches

Dans ce projet, vous allez apprendre :

  • Comment créer une fonction pour décrypter un chiffrement triangulaire
  • Comment gérer une entrée vide ou None
  • Comment implémenter la logique pour extraire le dernier caractère de chaque ligne et les concaténer

🏆 Réalisations

Après avoir terminé ce projet, vous serez capable de :

  • Comprendre le concept d'un chiffrement triangulaire
  • Implémenter une fonction pour décrypter un chiffrement triangulaire
  • Gérer différents types d'entrée, y compris une entrée vide ou None
  • Appliquer vos connaissances de manipulation de chaînes de caractères pour résoudre un problème du monde réel

Configurez la fonction de décryptage triangulaire

Un exemple est fourni ci-dessous pour faciliter la compréhension. Étant donné la chaîne chiffrée : "LcadcbsdxEsdxcx", lorsqu'elle est remplie dans un triangle rectangle, elle ressemble à ceci :

L
c a
d c b
s d x E
s d x c x

En extrayant le dernier caractère de chaque ligne et en les concaténant, on obtient le message déchiffré : "LabEx".

Dans cette étape, vous allez apprendre à créer la fonction triangle_decryption() dans le fichier triangle.py.

  1. Ouvrez le fichier triangle.py dans votre éditeur de code.
  2. Définissez la fonction triangle_decryption() qui prend une chaîne text en entrée et renvoie la chaîne de caractères du texte déchiffré.
def triangle_decryption(text: str) -> str:
    ## Initialisez une chaîne vide pour stocker le texte déchiffré
    decryption_text = ""

Gérer une entrée vide ou None

Dans cette étape, vous allez apprendre à gérer le cas où l'entrée text est vide ou None.

  1. Ajoutez une instruction if pour vérifier si text n'est pas vide.
if text:
    ## Supprimez les espaces de début et de fin du texte
    while text.startswith(" "):
        text = text[1:]
    while text.endswith(" "):
        text = text[:-1]

    ## Poursuivez le processus de décryptage
    #...
else:
    ## Si le texte est None, définissez le texte déchiffré sur None
    decryption_text = None

Implémentez la logique de décryptage

Dans cette étape, vous allez apprendre à implémenter la logique pour décrypter le chiffrement triangulaire.

  1. Initialisez une variable i pour suivre l'index actuel dans la chaîne text.
  2. Initialisez une variable step pour suivre la taille de l'incrément pour chaque ligne.
  3. Utilisez une boucle while pour itérer à travers la chaîne text et ajoutez le dernier caractère de chaque ligne à la chaîne decryption_text.
i = 0
step = 1
while i < len(text):
    ## Ajoutez le caractère actuel au texte déchiffré
    decryption_text += text[i]
    i = i + 1 + step
    step += 1

## Ajoutez le dernier caractère au texte déchiffré s'il n'est pas le dernier caractère du texte
if i - step + 1!= len(text):
    decryption_text += text[-1]

Retournez le texte déchiffré

Dans cette dernière étape, vous allez apprendre à retourner le texte déchiffré.

  1. Après le processus de décryptage, retournez la chaîne decryption_text.
return decryption_text

La fonction complète triangle_decryption() devrait ressembler à ceci :

def triangle_decryption(text: str) -> str:
    ## Initialisez une chaîne vide pour stocker le texte déchiffré
    decryption_text = ""

    if text:
        ## Supprimez les espaces de début et de fin du texte
        while text.startswith(" "):
            text = text[1:]
        while text.endswith(" "):
            text = text[:-1]

        i = 0
        step = 1
        while i < len(text):
            ## Ajoutez le caractère actuel au texte déchiffré
            decryption_text += text[i]
            i = i + 1 + step
            step += 1

        ## Ajoutez le dernier caractère au texte déchiffré s'il n'est pas le dernier caractère du texte
        if i - step + 1!= len(text):
            decryption_text += text[-1]

    else:
        ## Si le texte est None, définissez le texte déchiffré sur None
        decryption_text = None

    return decryption_text

if __name__ == "__main__":
    print(triangle_decryption("LcadcbsdxEsdxcx"))
    print(triangle_decryption("Lcadb"))
    print(triangle_decryption(" LcadcbsdxEsdxcx"))
    print(triangle_decryption("L ab"))
    print(triangle_decryption(None))

Testez le script

Dans cette étape, vous allez apprendre à tester le script avec les exemples fournis.

  1. Enregistrez le fichier triangle.py.
  2. Exécutez le script avec les exemples fournis :
python3 /home/labex/project/triangle.py

La sortie devrait correspondre aux résultats attendus :

## LcadcbsdxEsdxcx
LabEx
## Lcadb
Lab
## LcadcbsdxEsdxcx
LabEx
## L ab
Lab
## None
None

Félicitations! Vous avez terminé le projet.

✨ Vérifier la solution et pratiquer

Sommaire

Félicitations! Vous avez terminé ce projet. Vous pouvez pratiquer plus de laboratoires sur LabEx pour améliorer vos compétences.