Definir funciones para codificar y decodificar mensajes en código morse.
Definir una función para codificar una palabra en código morse. Debe cumplir los siguientes requisitos:
;
.Definir una función para decodificar una palabra en código morse. Debe cumplir los siguientes requisitos:
;
.Definir una función para codificar un mensaje en código morse. Debe cumplir los siguientes requisitos:
Definir una función para decodificar un mensaje en código morse. Debe cumplir los siguientes requisitos:
In [1]:
# Diccionario con la codificación morse
morse = {'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': '--..'}
def codificar_palabra(palabra):
"""
Función que codifica una palabra en morse.
Parámetros:
palabra: Una cadena con una palabra.
Devuelve:
El código morse correspondiente a la palabra con los bloques de código de cada letra separados por punto y coma.
"""
# Creamos una cadena vacía para ir añadiendo las letras codificadas
palabra_codificada = ''
# Recorremos los caracteres de la palabra
for i in palabra:
# Accedemos al diccionario con la clave correspondiente al caracter y añadimos el valor (el código morse) a la palabra codificada
palabra_codificada += morse.get(i.upper(), i) + ';' # Añadimos un punto y coma entre caracter y caracter.
return palabra_codificada
def decodificar_palabra(palabra):
"""
Función que decodifica una palabra en morse.
Parámetros:
palabra: Es una cadena con bloques de código morse separados por el caracter ;.
Devuelve:
La palabra decodificada.
"""
# A partir del diccionario morse construimos otro diccionario invertido, es decir, cuyas claves sean los códigos morse y cuyos valores sean las letras asociadas.
# Recorremos los pares del diccionario morse e invertimos las claves y los valores y devolvemos un diccionario mediante comprensión de diccionarios.
morse_invertido = {value:key for key, value in morse.items()}
# Creamos una cadena vacía para ir añadiendo las letras decodificadas.
palabra_decodificada = ''
# Dividimos el código morse por el punto y coma y recorremos la lista de códigos resultante.
for i in palabra.split(';'):
# Accedemos al diccionario invertido con la clave correspondiente al código morse y añadimos el valor (el caracter decodificado) a la palabra decodificada.
palabra_decodificada += morse_invertido.get(i, i)
return palabra_decodificada
def codificar_mensaje(mensaje):
"""
Función que codifica un mensaje en morse.
Parámetros:
mensaje: Una cadena con palabras separadas por espacios.
Devuelve:
El código morse correspondiente al mensaje con letras separadas por punto y coma y palabras separadas por espacio.
"""
# Creamos una cadena con un espacio para ir añadiendo las palabras codificadas.
mensaje_codificado = ' '
# Dividimos el mensaje de entrada por el espacio y obtenemos una lista de palabras.
mensaje = mensaje.split()
# Aplicamos la función codificar_palabra a cada palabra de la lista y obtenemos una lista con las palabras codificadas.
palabras_codificadas = list(map(codificar_palabra, mensaje))
# Concatenamos todas las palabras de la lista en una cadena separadas por un espacio.
return mensaje_codificado.join(palabras_codificadas)
def decodificar_mensaje(mensaje):
"""
Función que decodifica un mensaje en morse.
Parámetros:
mensaje: Es una cadena código morse con letras separadas por punto y coma y palabras separadas por espacio.
Devuelve:
El mensaje decodificado.
"""
# Creamos una cadena con un espacio para ir añadiendo las palabras decodificadas.
mensaje_decodificado = ' '
# Dividimos el mensaje de entrada por el espacio y obtenemos una lista de palabras codificadas.
mensaje = mensaje.split()
# Aplicamos la función decodificar_palabra a cada palabra de la lista y obtenemos una lista con las palabras decodificadas.
palabras_decodificadas = list(map(decodificar_palabra, mensaje))
# Concatenamos todas las palabras de la lista en una cadena separadas por un espacio.
return mensaje_decodificado.join(palabras_decodificadas)
# Llamada a las funciones de prueba
print(codificar_palabra('Python')) #Debe devolver '.--.;-.--;-;....;---;-.;'
print(decodificar_palabra('.--.;-.--;-;....;---;-.')) #Debe devolver 'PYTHON'
print(codificar_mensaje('Hola Python')) #Debe devolver '....;---;.-..;.-; .--.;-.--;-;....;---;-.'
print(decodificar_mensaje('....;---;.-..;.- .--.;-.--;-;....;---;-.')) #Debe devolver 'HOLA PYTHON'
In [2]: