微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决尝试创建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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。