cs9*_*s95 3 python encoding rot13 python-2.7 python-3.x
使用 python-2.7,您可以非常轻松地使用以下命令实现 rot-13 Ceasar Cipher
>>> 'abcdefghijklmnopqrstuvwxyz'.encode('rot-13')
'nopqrstuvwxyzabcdefghijklm'
Run Code Online (Sandbox Code Playgroud)
您甚至可以在CPython 存储库的 Zen of Python 代码中找到它。
然而,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
Run Code Online (Sandbox Code Playgroud)
如果我想使用rot-13python3.x 中的编码,我需要导入codecs.
>>> import codecs
>>> codecs.encode('abcdefghijklmnopqrstuvwxyz', 'rot-13')
'nopqrstuvwxyzabcdefghijklm'
Run Code Online (Sandbox Code Playgroud)
当然,这确实是一个小问题,我不介意导入codecs来实现凯撒密码(无论如何它是内置的)。我只是想知道这个设计决策背后是否有任何潜在的理由。也许原因很简单,“rot-13 并不是真正的编码”,我不知道。
如果有人能对此有所了解,我很想听听!
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |