Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Caesar Cipher saya dalam Python hanya mengembalikan watak yang dialih terakhir?

Mengapakah Caesar Cipher saya dalam Python hanya mengembalikan watak yang dialih terakhir?

Barbara Streisand
Barbara Streisandasal
2024-10-30 04:21:02393semak imbas

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

Fungsi Caesar Cipher dalam Python

Dalam Python, melaksanakan Caesar Cipher memerlukan peralihan huruf berdasarkan input yang ditentukan pengguna. Walau bagaimanapun, ralat biasa ialah teks sifir akhir hanya mencerminkan aksara yang dialih terakhir berbanding keseluruhan rentetan.

Kod yang disediakan menghadapi isu ini. Ia berulang melalui plaintext dan mengira aksara yang dialihkan, tetapi ia mengemas kini pembolehubah cipherText tunggal dalam gelung. Akibatnya, hanya aksara yang dialihkan terakhir ditambahkan pada output.

Untuk menyelesaikan isu ini, adalah perlu untuk menggabungkan aksara yang dialihkan ke dalam rentetan baharu semasa setiap lelaran gelung. Berikut ialah kod yang diperbetulkan:

<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>

Kini, pembolehubah cipherText diubah suai dan ditambah dengan setiap aksara yang dialihkan, memastikan bahawa output akhir mengandungi rentetan yang disulitkan lengkap.

Atas ialah kandungan terperinci Mengapakah Caesar Cipher saya dalam Python hanya mengembalikan watak yang dialih terakhir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn