ホームページ  >  記事  >  バックエンド開発  >  Python Caesar 暗号関数で最後にシフトされた文字だけが表示されるのはなぜですか?

Python Caesar 暗号関数で最後にシフトされた文字だけが表示されるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-31 21:30:29685ブラウズ

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

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>

仕組みは次のとおりです。

  • ループの外で cipherText を宣言し、空の文字列として初期化します。
  • ループ内で、finalLetter を計算した後、追加します。それを cipherText 文字列に変換します。

この更新されたコードは、シフトされたすべての文字を正しく蓄積し、目的の暗号化された文字列を生成します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。