回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<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","w","y","z"]
print()
originalMessage = input("Enter a message: ") # user input for message to be encrypted
cipheredMessage = ''
shiftNumber = 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 originalMessage:
letter = letter.lower()
if letter.isalpha():
shift = alphabet.index(letter) + shiftNumber
newPosition = alphabet[shift]
cipheredMessage += newPosition
elif ' ' or "!" or "." or "," or ";" or ":" or "-" in letter:
cipheredMessage += letter
print("Encrypting message....")
print("\tEncrypted message: " + cipheredMessage)
# for loop to decrypt the message into its orginal form
decipheredMessage = ''
for letter in cipheredMessage:
letter = letter.lower()
if letter.isalpha(): # checks to make sure the message contains alphabets
shift = alphabet.index(letter) - shiftNumber
newPosition = alphabet[shift]
decipheredMessage += newPosition
elif ' ' or "!" or "." or "," or ";" or ":" or "-" in letter: # makes sure spaces and punctuation is not affected in the encryption
decipheredMessage += letter
print("Decrypting message....")
print("\tDecrypted message: " + decipheredMessage)
print("\tOriginal message: " + originalMessage)
</code></pre>