¡Eso es genial! Use Python para implementar el traductor de código Morse, internauta: "¿Cómo llamar, te amo?"

El código Morse es un método para transmitir información de texto como una serie de tonos de encendido y apagado, luces o clics, y puede ser entendido directamente por oyentes u observadores expertos sin equipo especial. Lleva el nombre de Samuel FB Morse, el inventor del telégrafo.

algoritmo

El algoritmo es muy sencillo. Cada carácter en inglés se reemplaza por una serie de "puntos" y "guiones", a veces solo "puntos" o "guiones" en singular, y viceversa.

cifrado

  1. En el caso del cifrado, extraemos cada carácter (si no es un espacio) de una palabra a la vez y lo emparejamos con el código Morse correspondiente almacenado en cualquier estructura de datos de nuestra elección (si usa Python para codificar, el diccionario puede probar para ser muy útil en este caso)
  2. Almacene el código Morse en una variable que contendrá nuestra cadena codificada y luego agregue un espacio a la cadena, que contendrá el resultado.
  3. Al codificar con código Morse, necesitamos agregar 1 espacio entre cada carácter y 2 espacios consecutivos entre cada palabra.
  4. Si el carácter es un espacio, agregue otro espacio a la variable que contiene el resultado. Repetimos este proceso hasta atravesar toda la cuerda

Método de descifrado

  1. En el caso del descifrado, primero agregamos un espacio al final de la cadena a decodificar (esto se explicará más adelante).
  2. Ahora, continuamos extrayendo caracteres de la cadena hasta que no queden espacios.
  3. Una vez que obtenemos el espacio, buscamos el carácter inglés correspondiente en la secuencia de caracteres extraídos (o código Morse) y lo agregamos a la variable donde se almacenará el resultado.
  4. Recuerde que el seguimiento del espacio es la parte más importante de este proceso de descifrado. Una vez que obtengamos 2 espacios consecutivos, agregaremos otro espacio a la variable que contiene la cadena decodificada.
  5. El último espacio al final de la cadena nos ayudará a identificar la última secuencia de caracteres en código Morse (porque el espacio se puede usar como verificación para extraer caracteres y comenzar a decodificarlos).

llevado a cabo

Python proporciona una estructura de datos llamada diccionario, que almacena información en forma de pares clave-valor, lo cual es muy conveniente para implementar contraseñas (como el código Morse). Podemos guardar la tabla de código Morse en el diccionario, donde (par clave-valor) => (carácter inglés-código Morse) . El texto sin formato (caracteres en inglés) reemplaza la clave y el texto cifrado (código Morse) forma el valor de la clave correspondiente. Puede acceder al valor de la clave desde el diccionario, al igual que accedemos al valor de la matriz a través de su índice, y viceversa.


''' 
VARIABLE KEY 
'cipher' -> 'stores the morse translated form of the english string' 
'decipher' -> 'stores the english translated form of the morse string' 
'citext' -> 'stores morse code of a single character' 
'i' -> 'keeps count of the spaces between morse characters' 
'message' -> 'stores the string to be encoded or decoded' 
'''

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':'-----', ', ':'--..--', '.':'.-.-.-', 
					'?':'..--..', '/':'-..-.', '-':'-....-', 
					'(':'-.--.', ')':'-.--.-'} 

def encrypt(message): 
	cipher = '' 
	for letter in message: 
		if letter != ' ': 

			cipher += MORSE_CODE_DICT[letter] + ' '
		else: 
			cipher += ' '

	return cipher 

def decrypt(message): 

	message += ' '

	decipher = '' 
	citext = '' 
	for letter in message: 

		if (letter != ' '): 

			i = 0

			citext += letter 

		else: 
			i += 1

			if i == 2 : 

				decipher += ' '
			else: 

				decipher += list(MORSE_CODE_DICT.keys())[list(MORSE_CODE_DICT 
				.values()).index(citext)] 
				citext = '' 

	return decipher 

def main(): 
	message = "GEEKS-FOR-GEEKS"
	result = encrypt(message.upper()) 
	print (result) 

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

if __name__ == '__main__': 
	main() 

Producción:

-。。。-.- ... -....- ..- - .. -.... - 。。。-.- ...
GEEKS-FOR-GEEKS

Todavía quiero recomendar el grupo de aprendizaje de Python que construí yo mismo : 705933274 , todos los cuales están aprendiendo Python. Si quieren aprender o están aprendiendo Python, pueden unirse. Todos son parte del desarrollo de software y comparten productos secos de de vez en cuando (solo relacionado con el desarrollo de software de Python), incluida una copia de los últimos materiales avanzados de Python y la enseñanza basada en cero compilada por mí en 2021. ¡Bienvenidos amigos que están en un nivel avanzado e interesados ​​en Python para que se unan!

Supongo que te gusta

Origin blog.csdn.net/pyjishu/article/details/114746372
Recomendado
Clasificación