我将使用字母进行加密,我可以使用列表进行更改吗?
abc = abcdefghijklmnopqrstuvxyz
我需要使用以下职位: a = 1 b = 2 c = 3 d = 4 ...
a = [1、2、3、4、5、6、7、8、9、10 ...]
我将使用函数更改位置,更改值,这将给我类似于以下结果:
b = [4,23,22,11,7,8 ...]
然后字母将转到第一个字母的位置 a = 1至4、4 = d,23 = w,22 = v ...
abc_2 = dwvhk ...
我打算使用它
from gi.module import maketrans
abc = 'abcdefghijklmnopqrstuvwxyz'
abc_2 = 'dwvhkghevbwtrcmywqazxpolk'
encript = maketrans(abc,abc_2)
s = input('enter the phrase')
print (s.translate(encript))
答案 0 :(得分:0)
您可以遍历b
并将char放在位置abc
处以构造abc_2
,如下所示:
abc = 'abcdefghijklmnopqrstuvxyz'
abc_2 = ''
new_index = [4, 23, 22, 11, 7, 8]
for x in range(len(new_index)):
abc_2 += abc[new_index[x]]
print(abc_2)
答案 1 :(得分:0)
这应该有效:
def maketrans(abc, abc_2):
if len(abc) != len(abc_2):
raise ValueError('strings should be the same length')
trans = []
for i in range(len(abc)):
trans.append(ord(abc_2[i])-ord(abc[i]))
return trans
def translate(s, encrypt):
t = ""
for i in range(len(s)):
t += chr(ord(s[i])+encrypt[ord(s[i])-ord('a')])
return t
此外,abc_2
缺少一个字母,我认为它是'f'。
答案 2 :(得分:0)
这是一个版本:
# this is just to generate some permutation b
from random import shuffle
b = list(range(len(abc)))
shuffle(b)
abc = 'abcdefghijklmnopqrstuvwxyz'
abc_2 = ''.join(abc[i] for i in b)
transtable = str.maketrans(abc, abc_2)
print('hello world'.translate(transtable))
要使str.maketrans
起作用,两个给定的字符串必须具有相同的长度。
您的abc_2
有一些重复的字母,并且比原始字母短一个字符...