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!