lunes, 26 de febrero de 2018

Programación del código MURCIELAGO en Python

Los niños Scouts aprenden un código sencillo denominado código MURCIELAGO que se utiliza para encriptar y desencriptar mensajes. Puedes ver un vídeo que lo explica.

Clave murciélago

Dada una una palabra o frase a encriptar con la clave murciélago lo que se hace es sustituir cada letra que esté en la palabra murciélago con un número según la siguiente relación.

M U R C I E L A G O
0 1 2 3 4 5 6 7 8 9

Las letras que no se encuentren en la clave de encriptación no se convierten a dígitos numéricos.


Ejemplo


La palabra asombrado se convierte en 7s90b27d9.

ASOMBRADO
7S90B27D9

Código Python

Disponemos de dos opciones, una para encriptar y otra para desencriptar.
Veamos el código en funcionamiento.



#Código murciélago. Clave criptográfica usada por los Scouts
# MURCIELAGO
# 0123456789
x=int(input('1 para encriptar'+'\n'+'2 para desencriptar'+'\n'))
texto=input('Escriba su palabra o frase: ').lower()
codigo=['m','u','r','c','i','e','l','a','g','o'] #es una lista
print("murcielago")
print("0123456789")
salida=''
if x==1:
 for i in range(len(texto)):
  if texto[i] in codigo:
   salida+=str(codigo.index(texto[i]))
  else:
   salida+=texto[i]
if x==2:
 for i in range(len(texto)):
  if texto[i].isdigit():
   salida+=codigo[int(texto[i])]
  else:
   salida+=texto[i]
print(salida)

Lo interesante de este código es que aprendemos algunas técnicas para el tratamiento de cadenas alfanuméricas. También aprendemos a movernos por los elementos de una lista en Python.

str1.index(str2)


Dada una cadena str1 y dada otra cadena str2, queremos saber en que posición de la cadena 1 se encuentra el texto de la cadena 2.


#veamos el uso de index con cadenas alfanuméricas  
texto="Hola, esto es una prueba en Python"  
cadena="es"  
print(texto.index(cadena))  

Respuesta = 6.

Recordemos que se empieza a contar en cero y que si la expresión 'es' está varias veces únicamente se considera la primera vez que aparece.

Coincidencias

¿Cómo detectar en Python las coincidencias entre dos listas?


#vamos a detectar coincidencias de caracteres entre dos listas  
A=['a','b','c','d','e','f','g','h']  
B=['x','y','z','b','d','f','g','p','q','r']  
coinciden = [ x for x in A if x in B ]  
print(list(A))  
print(list(B))  
print(coinciden)  
print('Existen ',len(coinciden),' coincidendias')  




Puede consultar el siguiente post para ver otras formas de programar el algoritmo que nos permite encriptar y desencriptar con el código murciélago.

1 comentario:

  1. Tema: El Circuito de la comunicación: Observemos y analicemos en código murciélago M U R C I E L A G O 0 1 2 3 4 5 6 7 8 9 SUSTITUIMOS CADA LETRA POR SU NÚMERO CORRESPONDIENTE

    ResponderEliminar