首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试创建一个ROT13解码器,我发现了一个错误,我不太明白

尝试创建一个ROT13解码器,我发现了一个错误,我不太明白
EN

Stack Overflow用户
提问于 2020-10-03 16:10:08
回答 1查看 35关注 0票数 0

我对一般的编码世界非常陌生,在最近完成了一个以密码学为主题的Codecademy项目后,我受到了启发,尝试使用类似的设置来创建自己的ROT13解码器,因为我看到ROT13在一些我经常去的粉丝网站上使用了很多东西来掩盖剧透。我写的代码如下:

代码语言:javascript
复制
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))

但是,在调试时,我收到了以下错误消息:

代码语言:javascript
复制
line 10, in ROT13_decode
    translation += ABCs[(letter_value + 13)]
IndexError: string index out of range

我不知道我的字符串索引怎么会超出范围,因为只有26个字母可用。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-03 16:20:39

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

代码语言:javascript
复制
translation += ABCs[(letter_value + 13) % 26]

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64182079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档