尝试创建ROT13解码器,我发现了一个我不太理解的错误



我对编码世界还很陌生,在完成了最近一个以密码学为主题的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个字母可供使用时,我不知道我的字符串索引怎么会超出范围。我错过了什么?

当您将13添加到字母值时,您必须能够将结果循环回字母表的开头,这就是ROT13工作的全部技巧。如果您将翻译代码更改为:

translation += ABCs[(letter_value + 13) % 26]

字母表的上半部分通常会给你一个大于ABCs长度的值,它保证总是小于26。

相关内容

  • 没有找到相关文章

最新更新