首頁  >  文章  >  後端開發  >  為什麼我的 Python 中的凱撒密碼函數只顯示最後一個移位的字元?

為什麼我的 Python 中的凱撒密碼函數只顯示最後一個移位的字元?

Patricia Arquette
Patricia Arquette原創
2024-10-29 06:05:02710瀏覽

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

Python 中的凱撒密碼函數:加密字串

在Python 中實作凱撒密碼函數時,會出現一個常見問題,即最終的加密文字僅顯示最後移動的字元。要解決此問題,有必要了解導致此行為的問題。

在提供的程式碼中,循環迭代明文中的每個字元。對於字母字符,它根據提供的移位值來移位字符的 ASCII 代碼。但是,每個移位的字元都會附加到循環內名為 cipherText 的空字串。因此,只有最後一個字元顯示為加密文字。

要修正此問題,必須在循環內構造密文,並在處理完所有字元後返回密文。這可以透過以下修改程式碼來實現:

<code class="python">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</code>

透過此修改,cipherText 字串初始化一次,並在循環內將所有移位的字元附加到該字串。當函數傳回時,加密字串會按預期包含所有移位字元。

以上是為什麼我的 Python 中的凱撒密碼函數只顯示最後一個移位的字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn