"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué mi función de cifrado César en Python solo muestra el último carácter desplazado?

¿Por qué mi función de cifrado César en Python solo muestra el último carácter desplazado?

Publicado el 2024-11-08
Navegar:433

Why Does My Caesar Cipher Function in Python Only Display the Last Shifted Character?

Función de cifrado César en Python: cadenas cifradas

Al implementar una función de cifrado César en Python, surge un problema común cuando el texto cifrado final muestra sólo el último carácter desplazado. Para resolver esto, es necesario comprender el problema que causa este comportamiento.

En el código proporcionado, el bucle itera sobre cada carácter del texto sin formato. Para caracteres alfabéticos, cambia el código ASCII del carácter según el valor de desplazamiento proporcionado. Sin embargo, cada carácter desplazado se agrega a una cadena vacía llamada cipherText dentro del bucle. Como resultado, solo se muestra el último carácter como texto cifrado.

Para rectificar este problema, el texto cifrado debe construirse dentro del bucle y devolverse una vez que se hayan procesado todos los caracteres. Esto se puede lograr modificando el código de la siguiente manera:

def caesar(plainText, shift):
    cipherText = ""
    for ch in plainText:
        if ch.isalpha():
            stayInAlphabet = ord(ch)   shift
            if stayInAlphabet > ord('z'):
                stayInAlphabet -= 26
            finalLetter = chr(stayInAlphabet)
        cipherText  = finalLetter

    return cipherText

Con esta modificación, la cadena cipherText se inicializa una vez y todos los caracteres desplazados se le agregan dentro del bucle. Cuando la función regresa, la cadena cifrada contiene todos los caracteres desplazados, según lo previsto.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3