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 サイトの他の関連記事を参照してください。