如何解决尝试创建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 举报,一经查实,本站将立刻删除。