Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

305
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!