Cómo escribir un traductor de código Morse en Python

Cómo escribir un traductor de código Morse en Python

El código Morse existe desde principios de 1800 y ha llegado a la era digital. Desde servir como un medio crítico de comunicación durante la Segunda Guerra Mundial hasta enviar mensajes cifrados en la aviación y la marina, el código Morse llegó para quedarse.

Si no conoce este lenguaje fascinante, prepárese no solo para descubrir el código Morse, sino también para crear su propio traductor usando Python.

¿Qué es el código Morse?

El código Morse es un método de comunicación en el que se codifican caracteres de texto en una secuencia estándar de dos señales de duración variable, indicadas por puntos y rayas. El código Morse recibe su nombre de Samuel Morse, uno de los inventores del telégrafo. Puede memorizarlo y transmitirlo a través de ondas de sonido o luz visible perceptible por los sentidos humanos.

La longitud del código Morse equivalente es inversa a nuestra frecuencia de uso de ese alfabeto, y puede ver que el código Morse asigna la letra más común en el idioma inglés, E, a solo un punto.

Puede usar este software y aplicaciones gratuitos de código Morse para enviarse mensajes codificados entre sí. Por otro lado, aprender el código Morse es bastante simple y puedes aprenderlo en un mes con bastante práctica. Para ayudarlo a comenzar, aquí hay nueve sitios para aprender el código Morse de forma gratuita.

Cómo construir un traductor de código Morse usando Python

Comience definiendo un diccionario de Python llamado MORSE_CODE_DICT para almacenar los valores del código Morse. Las teclas serán letras del alfabeto inglés, con la secuencia adecuada de puntos o guiones como valor correspondiente. Usando un diccionario, puede buscar rápidamente cualquier clave a su valor correspondiente.

MORSE_CODE_DICT = { 'A':'.-', 'B':'-...',
                    'C':'-.-.', 'D':'-..', 'E':'.',
                    'F':'..-.', 'G':'--.', 'H':'....',
                    'I':'..', 'J':'.---', 'K':'-.-',
                    'L':'.-..', 'M':'--', 'N':'-.',
                    'O':'---', 'P':'.--.', 'Q':'--.-',
                    'R':'.-.', 'S':'...', 'T':'-',
                    'U':'..-', 'V':'...-', 'W':'.--',
                    'X':'-..-', 'Y':'-.--', 'Z':'--..',
                    '1':'.----', '2':'..---', '3':'...--',
                    '4':'....-', '5':'.....', '6':'-....',
                    '7':'--...', '8':'---..', '9':'----.',
                    '0':'-----', ', ':'--..--', '.':'.-.-.-',
                    '?':'..--..', '/':'-..-.', '-':'-....-',
                    '(':'-.--.', ')':'-.--.-' }

Declare una función denominada cifrar que acepte el mensaje como parámetro de entrada. Dentro de la función, inicialice una variable llamada cipher con una cadena vacía. Lo utilizará para crear y almacenar el mensaje cifrado. A continuación, declare un bucle for que itere sobre cada letra del mensaje.

Si la letra no es un espacio en blanco, pásela al diccionario para buscarla. El diccionario devuelve el valor de código Más correspondiente según la clave. Agregue un espacio para separar los caracteres del código Morse y use el operador abreviado += para concatenarlo con el código obtenido del diccionario. Si la letra es un espacio en blanco, agregue un espacio adicional al cifrado; El código Morse separa las palabras con dos espacios consecutivos.

def encrypt(message):
    cipher = ""
    for letter in message:
        if letter! = "":
            cipher += MORSE_CODE_DICT[letter] + ""
        else:
            cipher += ""
    return cipher

Declare una función llamada descifrar que acepte el mensaje como parámetro de entrada. Agrega un espacio al final, usando el operador abreviado para acceder al último carácter del código Morse. Inicialice dos variables, descifrar y citext para contener cadenas vacías. La variable de descifrado contendrá la oración descifrada que consiste en el alfabeto inglés mientras usa citext para almacenar cada letra del código Morse.

Itere un ciclo for que se ejecuta a través de cada letra del código Morse. Si la letra no es un espacio en blanco, inicialice una variable de contador i que realice un seguimiento del número de espacios hasta cero y almacene el código Morse de un solo carácter en citext. De lo contrario, la letra es un espacio, así que incrementa el contador en uno.

Si el contador es igual a dos, significa que debe agregar un espacio en blanco a la palabra descifrada variable descifrar. De lo contrario, acceda a las claves utilizando sus valores. Para hacer esto, itere sobre los pares clave-valor en el diccionario usando la función de elementos. Si el citext es igual al valor, agregue la clave correspondiente a la variable de descifrado usando el operador abreviado.

Finalmente, borre el citext para obtener la siguiente letra y devuelva la oración descifrada obtenida a la llamada de función.

def decrypt(message):
    message += ""
    decipher = ""
    citext = ""

    for letter in message:
        if letter! = "":
            i = 0
            citext += letter
        else:
            i += 1

            if i == 2:
                decipher += ""
            else:
                for key, value in MORSE_CODE_DICT.items():
                    if citext == value:
                        decipher += key

                citext = ""

    return decipher

Pruebe las funciones con alguna entrada de muestra. Comience inicializando un mensaje de nombre variable con la palabra o la oración que desea cifrar. Use la función superior para convertir todas las letras a mayúsculas y pásela a la función de encriptación como argumento. El código Morse contiene solo letras mayúsculas, que son las claves del diccionario. Esto también ayuda a evitar verificaciones de tiempo de ejecución innecesarias para casos válidos.

Imprima el valor resultante para ver el equivalente en código Morse de la oración original.

Luego, almacene un código Morse en la variable del mensaje y páselo a la función de descifrado. Imprime el resultado y comprueba que es correcto.

En lugar de codificar la entrada, puede aceptarla del usuario con la función input() .

message = "Make Use Of"
result = encrypt(message.upper())
print(result)

message = "--. - -.-. . .-. ... ---. .-."
result = decrypt(message)
print(result)

Salida del traductor de código Morse en Python

El programa Python traduce cada letra del alfabeto inglés a su código Morse equivalente y lo muestra en la pantalla de salida del terminal como se muestra. Si copia el resultado obtenido y lo pasa para descifrarlo, recibirá el texto original que pasó anteriormente. Esto verifica que la traducción funcionó perfectamente.

Salida del traductor de código Morse en Python

Aplicaciones Móviles para Código Morse

Los traductores de código Morse están disponibles de forma gratuita al alcance de su mano. Más de cientos de aplicaciones como Morse Mania, Morse Trainer, Morse Code Reader, Morse Code Keyboard y Morse Code Translator están disponibles en diferentes plataformas. Para su sorpresa, incluso es compatible con GBoard, el teclado de Google.

Para acceder al código Morse en su Gboard, abra el ícono de Configuración en el Gboard, seleccione Idiomas y toque Inglés (EE. UU.). Deslice el dedo hacia la derecha a través de las opciones y luego elija el código Morse. Su teclado ahora admite la inserción de código Morse junto con servicios de accesibilidad, como TalkBack, Switch Access o Select to Speak.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *