这是我用来编码的代码
import string
def encode(text,rotate_by):
s_from = string.ascii_lowercase + string.ascii_uppercase
s_to = (string.ascii_lowercase[rotate_by:] +
string.ascii_lowercase[:rotate_by] +
string.ascii_uppercase[rotate_by:] +
string.ascii_uppercase[:rotate_by])
cypher_table = string.maketrans(s_from, s_to)
cypher_table = string.maketrans(s_from, s_to)
return text.translate(cypher_table)
text = raw_input("Enter the text to encode: ")
rotate_by = int(raw_input("Rotate by: "))
print encode(text, rotate_by)
我如何解码由此编码的字符串?
答案 0 :(得分:0)
这是一个非常简单的旋转编码。你只需要反转轮换。
我会试试这个:
def decode(text, rotate_by):
s_from = string.ascii_lowercase + string.ascii_uppercase
s_to = (string.ascii_lowercase[rotate_by:] +
string.ascii_lowercase[:rotate_by] +
string.ascii_uppercase[rotate_by:] +
string.ascii_uppercase[:rotate_by])
reverse_table = string.maketrans(s_to, s_from)
return text.translate(reverse_table)
BTW:在你的编码中,string.maketrans-line是重复的。
上面重要的一行是maketrans-line,因为我只是颠倒了参数,这也应该反转翻译表。其他所有内容都与原始代码相似或相等。
答案 1 :(得分:0)
只需使用编码(加密)字符串调用encode,并使用反转符号调整原始rotate_by。
例如:
>>> encode("hello",3)
'khoor'
>>> encode("khoor",-3)
'hello'