我对一般的编码世界非常陌生,在最近完成了一个以密码学为主题的Codecademy项目后,我受到了启发,尝试使用类似的设置来创建自己的ROT13解码器,因为我看到ROT13在一些我经常去的粉丝网站上使用了很多东西来掩盖剧透。我写的代码如下:
ABCs = "abcdefghijklmnopqrstuvwxyz"
punctuation = ".,?'! "
user_input = input("Enter message to be decoded: ")
def ROT13_decode(message):
translation = ""
for letter in message:
if not letter in punctuation:
letter_value = ABCs.find(letter)
translation += ABCs[(letter_value + 13)]
else:
translation += letter
return translation
print(ROT13_decode(user_input))但是,在调试时,我收到了以下错误消息:
line 10, in ROT13_decode
translation += ABCs[(letter_value + 13)]
IndexError: string index out of range我不知道我的字符串索引怎么会超出范围,因为只有26个字母可用。我遗漏了什么?
发布于 2020-10-03 16:20:39
当您将13添加到字母值时,您必须能够将结果循环回到字母表的开头,这是使ROT13工作的整个技巧。如果您将转换代码更改为:
translation += ABCs[(letter_value + 13) % 26]字母表的上半部分通常会给你一个大于ABCs长度的值,它保证总是小于26。
https://stackoverflow.com/questions/64182079
复制相似问题