ホームページ > バックエンド開発 > Python チュートリアル > Python の Caesar Cipher が最後にシフトされた文字のみを返すのはなぜですか?

Python の Caesar Cipher が最後にシフトされた文字のみを返すのはなぜですか?

Barbara Streisand
リリース: 2024-10-30 04:21:02
オリジナル
313 人が閲覧しました

Why does my Caesar Cipher in Python only return the last shifted character?

Python のシーザー暗号関数

Python でシーザー暗号を実装するには、ユーザー指定の入力に基づいて文字をシフトする必要があります。ただし、一般的なエラーは、最終的な暗号文が文字列全体ではなく、最後にシフトされた文字のみを反映することです。

提供されたコードはこの問題に直面しています。平文を反復処理してシフトされた文字を計算しますが、ループ内で 1 つの cipherText 変数を更新します。その結果、最後にシフトされた文字のみが出力に追加されます。

この問題を解決するには、ループの各反復中にシフトされた文字を新しい文字列に連結する必要があります。修正されたコードは次のとおりです。

<code class="python">plainText = input("What is your plaintext? ")
shift = int(input("What is your shift? "))

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
    print("Your ciphertext is: ", cipherText)
    return cipherText

caesar(plainText, shift)</code>
ログイン後にコピー

これで、cipherText 変数が変更され、シフトされた各文字が追加され、最終出力に完全な暗号化された文字列が含まれるようになります。

以上がPython の Caesar Cipher が最後にシフトされた文字のみを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート