"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que minha função Caesar Cipher em Python exibe apenas o último caractere alterado?

Por que minha função Caesar Cipher em Python exibe apenas o último caractere alterado?

Publicado em 2024-11-08
Navegar:930

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

Função de Cifra de César em Python: Strings criptografadas

Ao implementar uma função de Cifra de César em Python, surge um problema comum onde o texto criptografado final exibe apenas o último caractere deslocado. Para resolver isso, é necessário entender o problema que causa esse comportamento.

No código fornecido, o loop itera sobre cada caractere do texto simples. Para caracteres alfabéticos, ele altera o código ASCII do caractere com base no valor de deslocamento fornecido. No entanto, cada caractere deslocado é anexado a uma string vazia chamada cipherText dentro do loop. Como resultado, apenas o último caractere é exibido como o texto criptografado.

Para corrigir esse problema, o texto cifrado deve ser construído dentro do loop e retornado assim que todos os caracteres forem processados. Isso pode ser conseguido modificando o código da seguinte forma:

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

Com esta modificação, a string cipherText é inicializada uma vez e todos os caracteres deslocados são anexados a ela dentro do loop. Quando a função retorna, a string criptografada contém todos os caracteres deslocados, conforme pretendido.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3