<p>问题是,当您将<code>shift_number</code>添加到字母索引时,它可能会增长超过25。你应该应用模。你知道吗</p>
<p>类似地,当减去一个值时,可以变成负数。在这种情况下,它是安全的,因为Python允许负索引。然而,你应该意识到,你正在产生一个负指数。你知道吗</p>
<p>我还修复了代码中的一些其他问题:</p>
<pre><code>alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
if __name__ == '__main__':
print()
# you should use snake_case for local variables in Python
original_message = input("Enter a message: ") # user input for message to be encrypted
ciphered_message = ''
shift_number = int(input("Enter a number to shift by (0-25): ")) # user input for value to shift by
# for loop to encrypt message using a ciphered alphabet
for letter in original_message.lower(): # call lower() once for the whole string
if letter.isalpha():
shift = alphabet.index(letter) + shift_number
# Add modulo to keep shift in 0..25 range
shift = shift % len(alphabet)
new_letter = alphabet[shift]
ciphered_message += new_letter
elif letter in ' !.,;:-': # the condition was incorrect
ciphered_message += letter
print("Encrypting message....")
print("\tEncrypted message: " + ciphered_message)
# for loop to decrypt the message into its orginal form
deciphered_message = ''
for letter in ciphered_message.lower():
if letter.isalpha(): # checks to make sure the message contains alphabets
shift = alphabet.index(letter) - shift_number
new_letter = alphabet[shift]
deciphered_message += new_letter
elif letter in ' !.,;:-': # makes sure spaces and punctuation is not affected in the encryption
deciphered_message += letter
print("Decrypting message....")
print("\tDecrypted message: " + deciphered_message)
print("\tOriginal message: " + original_message)
</code></pre>