Descifrando el Cifrado Triangular

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a descifrar un cifrado triangular, que es un método de organizar caracteres en un triángulo rectángulo. El mensaje oculto se encuentra en el último carácter de cada fila, y estos últimos caracteres se concatenan para formar la información transmitida.

👀 Vista previa

texto = " LcadcbsdxEsdxcx"
texto_descifrado = "LabEx"

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear una función para descifrar un cifrado triangular
  • Cómo manejar una entrada vacía o None
  • Cómo implementar la lógica para extraer el último carácter de cada fila y concatenarlos

🏆 Logros

Después de completar este proyecto, serás capaz de:

  • Comprender el concepto de un cifrado triangular
  • Implementar una función para descifrar un cifrado triangular
  • Manejar diferentes tipos de entrada, incluyendo entrada vacía o None
  • Aplicar tus conocimientos de manipulación de cadenas para resolver un problema del mundo real

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/strings("Strings") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/variables_data_types -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/strings -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/python_shell -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/conditional_statements -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/while_loops -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/lists -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/function_definition -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/standard_libraries -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} python/file_operations -.-> lab-302719{{"Descifrando el Cifrado Triangular"}} end

Configurar la función de descifrado triangular

A continuación, se presenta un ejemplo para ayudar a comprender. Dada la cadena cifrada: "LcadcbsdxEsdxcx", cuando se llena en un triángulo rectángulo, se ve así:

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

Al extraer el último carácter de cada fila y concatenarlos, obtenemos el mensaje descifrado: "LabEx".

En este paso, aprenderás a crear la función triangle_decryption() en el archivo triangle.py.

  1. Abra el archivo triangle.py en su editor de código.
  2. Defina la función triangle_decryption() que tome una cadena text como entrada y devuelva el texto descifrado como una cadena.
def triangle_decryption(text: str) -> str:
    ## Inicialice una cadena vacía para almacenar el texto descifrado
    decryption_text = ""

Manejar una entrada vacía o None

En este paso, aprenderás a manejar el caso en el que la entrada text es vacía o None.

  1. Agregue una instrucción if para comprobar si text no está vacía.
if text:
    ## Quite los espacios en blanco al principio y al final del texto
    while text.startswith(" "):
        text = text[1:]
    while text.endswith(" "):
        text = text[:-1]

    ## Continúe con el proceso de descifrado
    #...
else:
    ## Si el texto es None, establezca el texto descifrado en None
    decryption_text = None

Implementar la lógica de descifrado

En este paso, aprenderás a implementar la lógica para descifrar el cifrado triangular.

  1. Inicialice una variable i para llevar un registro del índice actual en la cadena text.
  2. Inicialice una variable step para llevar un registro del tamaño del paso para cada fila.
  3. Utilice un bucle while para iterar a través de la cadena text y agregar el último carácter de cada fila a la cadena decryption_text.
i = 0
step = 1
while i < len(text):
    ## Agregue el carácter actual al texto descifrado
    decryption_text += text[i]
    i = i + 1 + step
    step += 1

## Agregue el último carácter al texto descifrado si no es el último carácter del texto
if i - step + 1!= len(text):
    decryption_text += text[-1]

Devolver el texto descifrado

En este último paso, aprenderás a devolver el texto descifrado.

  1. Después del proceso de descifrado, devuelva la cadena decryption_text.
return decryption_text

La función completa triangle_decryption() debería verse así:

def triangle_decryption(text: str) -> str:
    ## Inicialice una cadena vacía para almacenar el texto descifrado
    decryption_text = ""

    if text:
        ## Quite los espacios en blanco al principio y al final del texto
        while text.startswith(" "):
            text = text[1:]
        while text.endswith(" "):
            text = text[:-1]

        i = 0
        step = 1
        while i < len(text):
            ## Agregue el carácter actual al texto descifrado
            decryption_text += text[i]
            i = i + 1 + step
            step += 1

        ## Agregue el último carácter al texto descifrado si no es el último carácter del texto
        if i - step + 1!= len(text):
            decryption_text += text[-1]

    else:
        ## Si el texto es None, establezca el texto descifrado en 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))

Prueba el script

En este paso, aprenderás a probar el script con los ejemplos proporcionados.

  1. Guarda el archivo triangle.py.
  2. Ejecuta el script con los ejemplos proporcionados:
python3 /home/labex/project/triangle.py

La salida debe coincidir con los resultados esperados:

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

¡Felicidades! Has completado el proyecto.

✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.