使用
python-2.7,您可以非常轻松地使用rot-13 Ceasar Cipher
>>> 'abcdefghijklmnopqrstuvwxyz'.encode('rot-13')
'nopqrstuvwxyzabcdefghijklm'
你甚至可以在Zen of Python code in the CPython repository找到它.
但是,python3.6上的相同代码给出了 –
>>> 'abcdefghijklmnopqrstuvwxyz'.encode('rot-13')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
LookupError: 'rot-13' is not a text encoding; use codecs.encode() to handle arbitrary codecs
如果我想在python3.x中使用rot-13编码,我需要导入编解码器.
>>> import codecs
>>> codecs.encode('abcdefghijklmnopqrstuvwxyz', 'rot-13')
'nopqrstuvwxyzabcdefghijklm'
当然,这实际上是一个小问题,我不介意导入编解码器来实现凯撒密码(无论如何它都是内置的).我只是想知道这个设计决定背后是否有任何潜在的理由.也许原因就像“rot-13不是真正的编码”一样简单,我不知道.
如果有人可以对此有所了解,我很乐意听到它!
最佳答案 你也可以看看这个
page,有人将你的问题标记为bug.
对于那些不想浏览网站及其后续链接的人来说,python提交者的简单响应如下:
“由于rot_13是一个代码转换器,而不是一个编码器,错误信息是正确的,就像函数的修复一样.但是,由于模块中的模块编码.rot_13和rot13函数都没有记录,(甚至在2.7中都没有) ,我想知道函数和if __name__;子句是否应该被删除.“