我正在编写一个简单的加密程序,它一直在工作,直到几分钟。它适用于简单的单词,比如星期一,但是当我使用较长的短语,比如“今天是星期一”时,我会得到一个索引越界错误。我想知道如何才能避免这种情况,让它加密整个消息。你知道吗
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)
你的信息长度无关紧要。问题在于:
如果shiftNumber输入为25,会发生什么情况?你知道吗
问题是,当您将
shift_number
添加到字母索引时,它可能会增长超过25。你应该应用模。你知道吗类似地,当减去一个值时,可以变成负数。在这种情况下,它是安全的,因为Python允许负索引。然而,你应该意识到,你正在产生一个负指数。你知道吗
我还修复了代码中的一些其他问题:
相关问题 更多 >
编程相关推荐