Lección 16 del curso Python Nivel Intermedio.
En la lección anterior vimos las principales operaciones y métodos para el procesamiento avanzado de sets, con lo cual ya estamos listos para poner en práctica las herramientas aprendidas hasta el momento.
En esta práctica implementaremos un programa capaz de encriptar o cifrar un archivo de texto, para posteriormente decodificarlo, usando varios de los conceptos aprendidos hasta el momento, en especial el uso de diccionarios y la lectura y almacenamiento de archivos.
Comencemos entonces entendiendo qué es la criptografía, cuál es el problema que resolveremos en esta práctica así como los requerimientos de nuestro proyecto y la forma como realizaremos la lectura del archivo de texto:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Muy bien, el objetivo de esta práctica es implementar un programa que codifique y decodifique palabras en un texto utilizando números, lo que se conoce precisamente como criptografía.
El programa debe estar en capacidad de leer el texto original desde un archivo con extensión .txt, crear un diccionario que asigne a cada palabra un número basado en su frecuencia (palabras comunes con menos dígitos y palabras raras con más), y un diccionario inverso para decodificar las palabras.
Además, el texto original debe ser codificado y el resultado de esta codificación debe ser almacenado en un archivo .txt, para luego leerlo desde el disco duro, decodificarlo y almacenar el resultado de esta decodificación en otro archivo .txt.
Teniendo claro el problema que queremos resolver y los requerimientos de nuestro programa, veamos ahora cómo implementar varias de las funciones auxiliares requeridas para estas fases de codificación y de decodificación:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
En el video anterior acabamos de ver cómo implementar cuatro funciones auxiliares:
- «leer_texto», que permite leer un archivo de texto y retorna una lista de palabras;
- «calcular_frecuencias», que toma la lista anterior y retorna un diccionario con la frecuencia de cada palabra dentro del texto original;
- «ordenar_diccionario», que organiza este diccionario de frecuencias de forma descendente y retorna el diccionario resultante;
- «diccionarios_cod_decod», que utiliza el diccionario ordenado obtenido con la función anterior para crear y devolver dos diccionarios: «word_to_num» para la codificación y «num_to_word» para la decodificación.
Con estas funciones auxiliares ya implementadas estamos entonces listos para realizar la codificación y decodificación del texto. Veamos esta implementación:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver, la codificación implica leer el archivo original (quijote.txt) línea por línea y luego usar el diccionario «word_to_num» para así generar el archivo quijote_codificado.txt con el texto encriptado.
Para la decodificación, hacemos un proceso similar pero inverso: primero leemos el archivo «quijote_codificado.txt» y luego usamos el diccionario «num_to_word» para decodificar una a una las palabras, obteniendo así el archivo «quijote_decodificado.txt», que será idéntico al archivo original (quijote.txt).
Y con este ejemplo de criptografía ya hemos puesto en práctica los diccionarios y herramientas como la lectura y almacenamiento de archivos para la solución de un problema real.
Así que ya estamos listos para entrar al último módulo del curso, en donde veremos herramientas para el procesamiento avanzado de strings.
En particular, en la próxima lección comenzaremos viendo varios métodos para el procesamiento avanzado de strings.
Todas las lecciones del curso Python Nivel Intermedio
