对于一个项目,我们必须编写一个程序,其中输入一个关键字和一个字符串,然后程序对其进行编码。例如
弦:但我没想到。关键词:仙境
该程序会将“仙境”拆分为字母表中的位置:
WONDERLAND = 23,15,14,4,5,18,12,1,14,4
然后它将位置 1 的字符与位置 23 的字符交换,将位置 2 的字符与位置 15 的字符交换,等等。
'But I didn't think' 会以“'nu n. ithdtBiItdk”的形式出现
我已经能够成功地编码一个字符串,但不能解码它。这是我的代码:
def encode(keyword,t):
key = []
text = []
for i in range(len(t)):
text.append(t[i])
for i in range(len(keyword)):
key.append(ord(keyword[i].lower()) - 96)
keynum = 0
actnum = 0
for i in range(len(text)):
print str(i) + " " + str(text)
if keynum > len(keyword) - 1:
keynum = 0
actnum = key[keynum]
while (actnum + i) > len(text) - 1:
actnum = actnum - len(text)
temp = text[i]
text[i] = text[i+actnum]
text[i+actnum] = temp
keynum += 1
merged = ""
for i in range(len(text)):
merged += text[i]
return merged
def decode(keyword,t):
key = []
text = []
for i in range(len(t)):
text.append(t[i])
for i in range(len(keyword)):
key.append(ord(keyword[i].lower()) - 96)
keynum = 0
actnum = 0
total = len(keyword)
for i in reversed(range(len(text))):
print str(i) + " " + str(text)
keynum = total
while keynum > len(keyword) - 1:
keynum -= len(keyword)
keynum += 1
if keynum < 0:
keynum = len(keyword) - 1
actnum = key[keynum]
while (actnum + i) > len(text) - 1:
actnum = actnum - len(text)
temp = text[i]
text[i] = text[i+actnum]
text[i+actnum] = temp
total -= 1
merged = ""
for i in range(len(text)):
merged += text[i]
return merged
x = encode("wonderland","But I didn't think.")
print decode("wonderland",x)
编辑:程序的设置使得如果指定的字符不存在,它会取它应该是的字符并从中减去字符串的长度,直到它在字符串内。
编辑:基本上,如果你能帮我反转“编码”功能,那就太好了。