Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Desarrollo Última actualización: 24 de septiembre de 2023
Compartir en:
Freshdesk - El software de atención al cliente fácil de usar que le ayuda a ofrecer experiencias de cliente encantadoras.

El código Morse es un método para codificar un mensaje utilizando puntos, guiones y espacios. Se utiliza mucho para comunicar mensajes en secreto.

Es posible que haya visto el uso del código morse en las escenas navales de muchas películas para comunicar mensajes. Aquí estamos hablando del mismo código morse, pero la única diferencia es que vamos a escribir un programa en Python para traducir del inglés al código morse y viceversa.

Acerca del código morse

El código morse tiene diferentes patrones para cada alfabeto inglés, número, puntuación y caracteres no latinos. Una vez que conozca los patrones del código morse para los distintos caracteres, le resultará fácil codificarlos y descodificarlos. Puede consultar la página de Wikipedia sobre el código morse para obtener más detalles y patrones.

morse-code

En este tutorial, aprenderemos a codificar texto inglés llano en código morse y viceversa. Utilizaremos alfabetos, números y signos de puntuación ingleses durante la codificación y la descodificación. Si desea añadir más tipos de caracteres, podrá hacerlo fácilmente una vez que aprenda la base de la codificación y descodificación.

Una cosa que debe recordar es que tanto los alfabetos en mayúsculas como en minúsculas tienen el mismo patrón de código morse. Esto se debe a que el código morse se utiliza principalmente para la comunicación que no se preocupa por los casos del alfabeto como las conversaciones cotidianas.

Entremos en la parte de codificación para codificar y descodificar.

Del inglés al código morse

El algoritmo para convertir un texto en inglés a código morse es sencillo. Comprobemos el algoritmo.

  1. Cree un diccionario con las correspondencias de los patrones del código morse con los alfabetos, números y puntuaciones ingleses.
  2. Itere sobre el texto y añada al resultado el patrón de código morse de cada carácter del texto.
    • El código morse contiene un espacio después de cada carácter y un doble espacio después de cada palabra.
    • Por tanto, cuando encontremos un espacio en el texto, que es el separador de las palabras, debemos añadir un doble espacio al resultado.
  3. La cadena resultante será el código morse que necesitábamos.
  4. Por último, devuelva el resultado.

Intente escribir el código en Python. No se preocupe, aunque no sea capaz de escribirlo completamente.

Comprobemos el código para codificar texto inglés plano en código morse.

# diccionario para mapear caracteres a código morse
CHARS_TO_MORSE_CODE_MAPPING = {
 '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': '-----',
 '.': '.-.-.-',
 ',': '--..--',
 '?': '..--.',
 '\'': '- - - - -',
 '!': '- - - - -',
 '/': '- - - -',
 '(': '- - - -',
 ')': '- - - -',
 '&': '- - - - -',
 ':': '- - - - -',
 ';': '- - - - -',
 '=': '- - - -',
 ': '- - - -',
 '-': '- - - - -',
 '_': '- - - - -',
 '"': '- - - - -',
 '$': '- - - - -',
 '@': '- - - - - -',
}

# función para codificar texto llano inglés a código morse
def to_morse_code(texto_llano_inglés):
 morse_code = ''
 for char in texto_llano_inglés:
       # comprobar si hay espacios
 # añadir un espacio después de cada carácter y doble espacio después de cada palabra
 if char == ' ':
 morse_code = ' '
 else:
           # añadir código morse codificado al resultado
 morse_code = CHARS_TO_MORSE_CODE_MAPPING[char.upper()] ' '
 return morse_code

morse_code = to_morse_code(
 'Geekflare produce artículos de alta calidad sobre tecnología y finanzas, crea herramientas y API para ayudar a crecer a empresas y personas.'
)
print(morse_code)

Puede ver la salida del código morse a continuación. También debería ver un código morse similar en su terminal si no ha cambiado el mensaje.

--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... - - - - - - --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- - - - - - ..-. .. -. .- -. -.-. .   .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ...   - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ...   - --- .... . .-.. .--.   -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. .   --. .-. --- .-- .-.-.-

¡Hurra! Tenemos el código morse. Ya sabe lo que viene después.

Antes de saltar al programa de descodificación, parémonos un momento a pensar en cómo escribir el código para descodificarlo.

Debería haber pensado en invertir el diccionario CHARS_TO_MORSE_CODE_MAPPING como uno de los pasos. Hacerlo manualmente es agitado y necesita actualizarse cada vez que se cambia el mapeo original. Escribamos código para invertir el diccionario.

def revertir_mapeo(mapeo):
 revertido = {}
 para clave, valor en mapeo.elementos():
 revertido[valor] = clave
 return revertido

Con el código anterior sólo estamos invirtiendo los pares clave-valor del diccionario dado. El diccionario resultante contendrá valores como nuevas claves y claves como nuevos valores.

Ya tenemos todas las piezas para descodificar el código morse en texto en inglés. Sin más preámbulos, vamos a descodificar el código morse.

Del código morse al inglés

Podemos invertir el proceso de codificación del código morse para obtener el algoritmo de descodificación. Veamos el algoritmo para descodificar el código morse en texto inglés llano.

  1. Invierta el diccionario CHARS_TO_MORSE_CODE_MAPPING utilizando la función util que hemos escrito.
  2. Itere sobre el código morse y siga la pista del carácter de código morse actual.
    • Si encontramos un espacio, significa que tenemos un carácter de código morse completo para descodificar.
      • Si el carácter de código morse actual está vacío y tenemos dos espacios consecutivos, entonces añada un separador de palabras que es un espacio simple en el texto en inglés sencillo.
      • Si la condición anterior es falsa, entonces obtenga el carácter descodificado del diccionario y añádalo al resultado. Restablezca el carácter de código morse actual.
    • Si no encontramos espacio, añádalo al carácter morse actual.
  3. Si existe el último carácter, añádalo al resultado después de descodificarlo utilizando el diccionario.
  4. Devuelva el resultado al final.

Comprobemos el código del algoritmo anterior.

def revertir_mapeo(mapeo):
   # añada el código de la función del fragmento anterior...

CHARS_TO_MORSE_CODE_MAPPING = {} # añadir los valores del diccionario 
MORSE_CODE_TO_CHARS_MAPPING = reverse_mapping(CHARS_TO_MORSE_CODE_MAPPING)

def to_english_plain_text(morse_code):
 english_plain_text = ''

 current_char_morse_code = ''
 i = 0
 while i < len(morse_code) - 1:
       # comprobación de cada carácter
 si morse_code<x>[i]</x> == ' ':
 # comprobación de la palabra
 si len(current_char_morse_code) == 0 y morse_code[i 1] == ' ':
 english_plain_text = ' '
 i = 1
 else:
               # añadiendo el carácter descodificado al resultado
 english_plain_text = MORSE_CODE_TO_CHARS_MAPPING[
 current_char_morse_code]
 current_char_morse_code = ''
 else:
           # añadir char de código morse al carácter actual
 current_char_morse_code = morse_code<x>[i]</x>
 i = 1

 # añadir el último carácter al resultado
 if len(current_char_morse_code) > 0:
       english_plain_text = MORSE_CODE_TO_CHARS_MAPPING[
 current_char_morse_code]

 return english_plain_text

english_plain_text = to_english_plain_text(
 '--. . . -.- ..-. .-.. .- .-. . .--. .-. --- -.. ..- -.-. . ... .... .. --. .... - - - - - - --.- ..- .- .-.. .. - -.-- - . -.-. .... -. --- .-.. --- --. -.-- - - - - - ..-. .. -. .- -. -.-. .   .- .-. - .. -.-. .-.. . ... --..-- -- .- -.- . ...   - --- --- .-.. ... --..-- .- -. -.. .- .--. .. ...   - --- .... . .-.. .--.   -... ..- ... .. -. . ... ... . ... .- -. -.. .--. . --- .--. .-.. .   --. .-. --- .-- .-.-.- '
)
print(english_plain_text)

He dado el código morse que se genera a partir de la función de codificación. Obtendremos la siguiente salida si ejecutamos el programa anterior.

GEEKFLARE PRODUCE ARTÍCULOS DE ALTA CALIDAD SOBRE TECNOLOGÍA Y FINANZAS, CREA HERRAMIENTAS Y APIS PARA AYUDAR A LAS EMPRESAS Y A LAS PERSONAS A CRECER.

Nota: la salida está en el alfabeto inglés en mayúsculas porque hemos utilizado el alfabeto en mayúsculas para el mapeo en el diccionario.

Palabras finales

Hemos visto que la salida de la función de descodificación está en mayúsculas. Se puede mejorar el programa haciendo que la salida sea como es en el tiempo dado rastreando las minúsculas y mayúsculas del alfabeto inglés. Esto no está relacionado con el código morse, ya que tanto las mayúsculas como las minúsculas tienen el mismo patrón. Pruébelo, ya que es más divertido codificar.

Eso es todo para este tutorial. Utilice los programas que hemos escrito cuando se encuentre con el código morse la próxima vez.

Feliz codificación 👨‍💻

Ahora puede ver cómo crear una contraseña aleatoria en Python.

Además, consulte estos traductores de inglés a código morse.

  • Hafeezul Kareem Shaik
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre desarrollo
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • La herramienta de texto a voz que utiliza la IA para generar voces realistas similares a las humanas.
    Pruebe Murf AI
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder