Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

315
Vistas
Reemplazar una letra con "#" y viceversa

Soy nuevo en Python y estoy haciendo un programa de prueba que reemplaza todas las letras en un texto dado con signos.

 def encrypted(request): text = request.GET['text'] text = text.replace("a", "#.") text = text.replace("b", "##.") text = text.replace("c", "###.") text = text.replace("d", "####.") text = text.replace("e", "#####.") text = text.replace("f", "######.") etc... return render(request, 'encrypted.html', {'text': text})

Lo he conseguido pero he probado a revertirlo de la misma manera y no funciona.

 def decrypted(request): ftext = request.GET['text'] ftext = ftext.replace("#.", "a") ftext = ftext.replace("##.", "b") ftext = ftext.replace("###.", "c") ftext = ftext.replace("####.", "d") ftext = ftext.replace("#####.", "e") etc... return render(request, 'decrypted.html')

Así que el texto no aparece en absoluto en la página.

 <html lang="en"> <head> <meta charset="UTF-8"> <title>yCrypt</title> </head> <body> TEXT DECRYPTION: {{ftext}} </body> </html>

Me pregunto por qué no muestra problemas de código en absoluto. ¿Quizás hay una manera más simple de hacer esto posible?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

No estoy siguiendo completamente lo que está tratando de hacer aquí, pero su primera llamada de replace en la función decrypted y reemplazará cada aparición de "#". con la letra "a" en cada "letra encriptada", no solo la de "a".

Las llamadas posteriores a replace no coincidirán con nada porque su "#" final. ya ha sido reemplazada erróneamente por la letra "a".

Para que esto funcione según lo diseñado, tendría que invertir el orden de sus llamadas de replace para encontrar primero las coincidencias más largas.

Y para que se represente, también debe pasarlo en el contexto a su procesador de plantilla.

 def decrypted(request): ftext = request.GET['text'] etc... ftext = ftext.replace("#####.", "e") ftext = ftext.replace("####.", "d") ftext = ftext.replace("###.", "c") ftext = ftext.replace("##.", "b") ftext = ftext.replace("#.", "a") return render(request, 'decrypted.html', { "ftext": ftext })
over 4 years ago · Santiago Trujillo Denunciar

0

No soy un experto pero puedes probar

 def decrypted(request): ftext = request.GET['text'] ftext = ftext.replace("#.", "a") ftext = ftext.replace("##.", "b") ftext = ftext.replace("###.", "c") ftext = ftext.replace("####.", "d") ftext = ftext.replace("#####.", "e") return render(request, 'decrypted.html',{'ftext':ftext})
over 4 years ago · Santiago Trujillo Denunciar

0

La razón por la que no funciona es que la codificación de a es una subcadena de b, c, d, e, etc.

 a = #. b = ##. c = ###.

como se puede ver #. está al final de cada cadena codificada

Entonces, cuando codifica por primera vez, digamos abc , se convierte en #.##.###. Cuando ejecuta el paso de decodificación que usa replace("#.", "a") obtiene el resultado a#a##a donde cada #. se reemplaza por a y, como puede ver, no quedan puntos.

La solución es bastante simple en lugar de ###. formato, utilice .###. formato

 a = .#. b = .##. c = .###.

esto garantizará solo el número correcto de # coincidencias y no una subcadena.

Entonces, cuando codifica por primera vez, digamos abc , se convierte en .#..##..###. Cuando ejecuta el paso de decodificación que usa replace(".#.", "a") obtiene el resultado a.##..###. como puede ver, los códigos para b y c todavía están allí.

En una nota al margen, puede usar bucles para hacer que el código sea mucho más pequeño.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda