我想知道下面的代码是否是一种有效的方法来编码/解码字符串而不使用内置的maketrans()方法。使用.index方法会减慢进程吗?有一个更好的方法吗?感谢。
alpha1 = ['a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x','y','z']
def decode(text, shift):
alpha2 = alpha2 = alpha1[shift:] + alpha1[:shift]
encoded = ''
for i in text:
if i in alpha1:
encoded += alpha2[alpha1.index(i)]
else:
encoded += i
return encoded
答案 0 :(得分:1)
def decode(text, shift):
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+shift) % 26 + c)
return "".join([d.get(c, c) for c in text])
鹰眼将从import this
源代码中识别出来。我一直以为这是做腐(x)编码的一种巧妙方法。
编辑:这也考虑了大写字母,如果你不想要,那么你可以把它减少到:
def decode(text, shift):
d = {}
for i in range(26):
d[chr(i+97)] = chr((i+shift) % 26 + 97)
return "".join([d.get(c, c) for c in text])