Python の Caesar 暗号関数: 文字シフトの問題のトラブルシューティング
Python で Caesar Cipher 関数を作成しようとすると、繰り返し発生する問題が発生しますここでは、暗号化された文字列全体ではなく、最後にシフトされた文字のみが表示されます。これに対処するために、コードを詳しく調べて根本原因を特定します。
提供されたコードは Caesar Cipher の原則に準拠しています。平文とシフト値を受け入れ、各文字を反復処理して必要なシフトを適用します。ただし、重要な手順が欠けています。それは、暗号化された文字を保存するための新しい文字列を作成することです。
関数内では、cipherText の初期化はループの外で行われる必要があります。現状では、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 print("Your ciphertext is: ", cipherText) return cipherText</code>
仕組みは次のとおりです。
この更新されたコードは、シフトされたすべての文字を正しく蓄積し、目的の暗号化された文字列を生成します。
以上がPython Caesar 暗号関数で最後にシフトされた文字だけが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。