
Aquí se presenta un ejemplo en el que se utiliza expresiones regulares de manera básica para manipular una cadena de caracteres con el fin de realizar la encriptación de un mensaje
Debemos escribir una función que reciba dos parámetros de tipo cadena (String): el primero sera la llave, y el segundo el mensaje. La función debe retornar una cadena (String).
Ejemplo:
Llave: rfc
Mensaje: A mi me encanta la programación!
La función debería retornar: rfcA mrfci mrfce rfcencrfcantrfca lrfca prrfcogrrfcamrfcacrfción!
La letra y no será considerada una vocal y tampoco las vocales que contengan acentos serán tomadas en cuenta.
Deberemos tomar en cuenta que si el mensaje es nulo o vacío, se debe retornar una cadena vacía. Si la llave es nula o vacía, entonces se deberá usar la cadena por defecto DCJ.
Resolución:
El desarrollo del ejercicio lo realizaremos con los siguientes fragmentos de código
Definimos un patrón para nuestra librería de expresiones regulares indicandole que queremos buscar en este caso las vocales
Ahora definimos nuestra función de encriptación en la cual vamos a realizar las siguientes tareas:
De esta manera tendremos nuestra función lista para encriptar un mensaje. Para realizar pruebas ingresaremos el siguiente fragmento de código para validar la encriptación del mensaje que se planteó en el ejemplo en el que realizaremos las siguientes tareas:
Como nuestra función está bien codificada, esperamos un mensaje de éxito como se muestra en la imagen a continuación:
Enunciado del problema
Se nos ha solicitado desarrollar una nueva forma de encriptar comuniacciones. Básicamente, cada vocal de un mensaje de entrada tendrá que estar precedida por alguna cadena de caracteres llamada llave (key).Debemos escribir una función que reciba dos parámetros de tipo cadena (String): el primero sera la llave, y el segundo el mensaje. La función debe retornar una cadena (String).
Ejemplo:
Llave: rfc
Mensaje: A mi me encanta la programación!
La función debería retornar: rfcA mrfci mrfce rfcencrfcantrfca lrfca prrfcogrrfcamrfcacrfción!
La letra y no será considerada una vocal y tampoco las vocales que contengan acentos serán tomadas en cuenta.
Deberemos tomar en cuenta que si el mensaje es nulo o vacío, se debe retornar una cadena vacía. Si la llave es nula o vacía, entonces se deberá usar la cadena por defecto DCJ.
Resolución:
El desarrollo del ejercicio lo realizaremos con los siguientes fragmentos de código
#Importamos la librería para expresiones regulares
import re
Definimos un patrón para nuestra librería de expresiones regulares indicandole que queremos buscar en este caso las vocales
pattern = re.compile("[aeiouAEIOU]")
Ahora definimos nuestra función de encriptación en la cual vamos a realizar las siguientes tareas:
- Validamos si el mensaje recibido es diferente de nulo o vacío, caso contrario retornamos un string vacío y finalizamos la ejecución
- Validamos si la llave recibida es diferente de nulo o vacío, caso contrario le asignamos una cadena por defecto
- Buscamos en el mensaje todas las coincidencias de las vocales que definimos en la expresión regular de nuestro patrón, y creamos una lista con esas coincidencias
- Eliminamos los elementos duplicados de la lista de coincidencias
- Recorremos esa lista reemplazando las coincidencias en el mesaje original por la clave antes de la coincidencia
- Retornamos el mensaje encriptado
def encript(key, message):
if not message:
# 1 return ""
if not key:
# 2 key = "RFC"
matches = pattern.findall(message)
# 3 matches = list(dict.fromkeys(matches))
# 4 for match in matches:
# 5 message = message.replace(match, f"{key}{match}")
return message
# 6De esta manera tendremos nuestra función lista para encriptar un mensaje. Para realizar pruebas ingresaremos el siguiente fragmento de código para validar la encriptación del mensaje que se planteó en el ejemplo en el que realizaremos las siguientes tareas:
- Definir una variable con la clave "rfc"
- Definir una variable con el mensaje "A mi me encanta la programación!" para encriptarlo
- Definir una variable con el resultado de la encriptación del ejemplo
- Guardar en una variable el resultado de la encriptación que devuelve la función que hemos creado
- Validar si el mensaje encriptado con la función es igual al que nos muestran en el ejemplo, e imprimir un mensaje para saber si coinciden o no.
key = "rfc" # 1
message = "A mi me encanta la programación!" # 2
result = "rfcA mrfci mrfce rfcencrfcantrfca lrfca prrfcogrrfcamrfcacrfción!" # 3
crypted = encriptMessage(key, message) # 4
if crypted == result: # 5
print("Los mensajes encriptados coinciden")
else:
print("Los mensajes encriptados NO coinciden")
Como nuestra función está bien codificada, esperamos un mensaje de éxito como se muestra en la imagen a continuación:
No hay comentarios.:
Publicar un comentario