有人能告诉我为什么我的纯文本消息中只有一个字符需要加密吗?消息是“船在午夜启航”,加密密钥是4。我只能将t转换为x,消息的其余部分不打印。我遗漏了什么?
#request the message from the user
def InputMessage():
PlainText = input("Enter the message you would like to encrypt: ")
return PlainText
#encrypt the message
def CaesarShift(PlainText):
#initialize variables
alpha = ['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']
Key = int(input("Enter the encryption key: "))
CipherText = ""
#skip over spaces in the message
for ch in PlainText:
if ch == " ":
pass
else:
#encrypt the message
index = alpha.index(ch)
NewIndex = index + Key
ShiftedCharacter = alpha[NewIndex]
CipherText += ShiftedCharacter
return CipherText
#main program start
def main():
PlainText = InputMessage()
CipherText = CaesarShift(PlainText)
#print the encrypted message
print("Encrypted message: " + CipherText)
#main program end
main()发布于 2017-09-30 05:45:43
您的return语句在循环中,因此该函数仅在加密第一个字母后返回。
您需要确保return语句的缩进级别与for循环的缩进级别相同。
https://stackoverflow.com/questions/46497251
复制相似问题