我在python中编写了一个rot13
编码的字符串,我将对其进行解码:
"Gur dhvpx oebja sbk whzcrq bire gur ynml qbt"
是否可以在python中进行?我找不到任何方法来做到这一点。
请帮忙!
这是我尝试过的:
s = "Gur dhvpx oebja sbk whzcrq bire gur ynml qbt"
s1 = ""
for i in range(len(s)):
c = s[i]
if c >= 'a' and c <= 'm': c += 13
elif c > 'A' and c < 'M': c += 13
elif c >= 'n' and c < 'z': c -= 13
elif c >= 'N' and c <= 'Z': c -= 13
s1 += c
print(c)
print(s1)
答案 0 :(得分:1)
要解码rot13
已编码的字符串,例如s
,只需再次获取字符串的rot13
,即计算rot13(s)
。
如果您不熟悉如何在python中计算rot13
,请尝试使用Google搜索,您肯定会找到一个。我用Google搜索并找到了一个效果很好的解决方案:https://stackoverflow.com/a/3269756/3293087 [注意,它只适用于python2而不是python3,因为string.maketrans
已从python3中删除。]
为了完整起见,我将在此处编写代码:
# Python 2 solution
import string
rot13Table = string.maketrans(
"ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz",
"NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm")
rot13 = lambda s : string.translate(s, rot13Table)
print rot13("Hello World!")
# Outputs "Uryyb Jbeyq!"
注意:我不会写出与OP最初发布的相对应的解码字符串,因为它非常令人反感和同性恋。有兴趣的人可以自己做。
更新:我还找到了适用于python 2&amp; 3来自this SO answer。事实证明rot13
模块中的python中有一个内置codecs
编码器:
# Python 2 & 3 compatible
import codecs
rot13 = lambda s : codecs.getencoder("rot-13")(s)[0]
# Answer
rot13("Gur dhvpx oebja sbk whzcrq bire gur ynml qbt")
更新2 :由于OP坚持知道答案并且似乎没有安装python,我有一个创建的JS解决方案https://codepen.io/anon/pen/zPYVQP。其他人请谨慎行事。
答案 1 :(得分:0)
import string #use this package
utf8=string.maketrans("NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm","ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz") #this are the related alphabets
print(string.translate("Gur dhvpx oebja sbk whzcrq bire gur ynml qbt", utf8))