[ Foro de Python ]

Codificación de párrafo por desplazamiento

22-Aug-2020 14:07
Invitado (?scar)
1 Respuestas

Buenos días, a continuación muestro el siguiente ejercicio de un curso de introducción a python que estoy realizando. También les muestro el código que he creado. Desgraciadamente no poseo el documento .txt para comprobar si lo que estoy realizando es correcto. Lo he solicitado a los administradores del curso (hace dos semanas) pero estoy pendiente de respuesta, seguramente porque estamos en un mes no lectivo en España.

Muchas gracias de antemano por sus comentarios. Un saludo.

Enunciado:

Cargar el fichero "Quijote.txt" del ejercicio del tema 7 con el código de caracteres correcto, crear una función que permita seleccionar el número de párrafo que se solicita más abajo (empezando a contar por 0 para el primer párrafo) como en el ejercicio del tema 7 y le aplique a ese párrafo una encriptación por desplazamiento de código (como la explicada en el tema 6) con el desplazamiento positivo indicado más abajo, devolviendo el párrafo encriptado y obteniendo a la vez el valor numérico del código del caracter que se encuentra en la posición del párrafo que se indica más abajo (empezando a contar por 0 para el primer caracter del párrafo). Guardar el párrafo encriptado en una variable y crear una función a la que pasarle el párrafo encriptado y el desplazamiento aplicado y que permita desencriptar el texto aplicando el mismo desplazamiento de código en sentido inverso (esta parte no se evalúa).

Número de párrafo: 8

Desplazamiento del código de encriptación: 5

Número de carácter dentro del párrafo: 160

Lo que solicita es el Número de código del carácter encriptado que se encuentra en la posición indicada.




Código que he implementado (les agradecería comentarios de posibles errores):

def parrafo(numerodeparrafo):
   #primero cargamos el fichero
   fichero = open('quijote-Copy1.txt', "r", encoding="utf-8")
   #lo leemos
   texto = fichero.read()
   #y seleccionamos el párrafo indicado en el parámetro
   parrafos = texto.split('\n')
   while '' in parrafos:
       parrafos.remove('')
   cuenta=0
   for parrafo in fichero:
       cuenta=cuenta+1
   parrafoseleccionado=parrafos[numerodeparrafo]
   cadena=parrafoseleccionado
   cadenacodificada=""
   desplazamiento=5
   for letra in cadena:
       cadenacodificada=cadenacodificada+chr(ord(letra)+desplazamiento)
   cadenadecodificada=''
   for letra in cadenacodificada:
       cadenadecodificada=cadenadecodificada+chr(ord(letra)-desplazamiento)

   print(cadena)
   print(cadenacodificada)
   print(cadenadecodificada)

   for letra in cadenacodificada:
       print(ord(letra),end=" ")

   for letra in cadenacodificada[160:161]:
       print(f'\n\n\nEl número de código del carácter encriptado que se encuentra en la posición indicada: {ord(letra)}')



   #acordaos de cerrar el fichero si no lo habéis abierto con un with
   fichero.close()
   return(parrafoseleccionado)

parrafo(8)


22-Aug-2020 14:57
Nacho Cabanes (+84)

En un primer vistazo, la apariencia es buena.

No tengo claro que la función deba abrir el fichero, en vez de recibir la lista de párrafos, pero en general se entiende tu planteamiento. Puedes probarlo con una copia de tu fichero fuente, a falta del texto original "Quijote.txt".






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)