所以我试图创建一个文本加密程序,将文本中的字母更改为不同的ordred字母,但是a = key [1](Key是重新排列的字母表的名称)但是它没有工作,因为关键[1]不能被分配到一个litteral,任何关于如何得到这个的想法。
答案 0 :(得分:0)
所以key
是您重新排列的字母,ALPHA
是正常的字母。
ALPHA = 'abcdefghijklmnopqrstuvwxyz'
key = 'zwlsqpugxackmirnhfdvbjoeyt'
msg = 'secretmessage'
code = []
for i in msg:
code.append(key[ALPHA.index(i)])
print(''.join(code))
在编码后而不是在编码期间创建字符串。
答案 1 :(得分:0)
Python中的字符串以及许多其他语言都是不可变的,because reasons。
您需要创建一个新字符串,根据需要替换字符。
对于字节字符串(在Python中是普通字节数组),有.translate
。它需要一个256字节的字符串来描述如何替换每个可能的字节。
对于Unicode字符串.translate
采用的地图更方便但仍然可能很麻烦:
unicode('foo bar').translate({ord('f'): u'F', ord('b'): u'B'})
一般情况下,这样的事情应该有效:
def transform_char(char):
# shift a characte 3 positions forward
return chr(ord(char) + 3)
def transform(source_string):
return ''.join(transform_char(c) for c in source_string)
transform
会发生什么?它生成一个转换字符列表([transform_char(c) for c in source_string]
)称为“列表理解”。此列表包含source_string
中每个字符的转换字符。然后,通过在它们之间放置一个空字符串join
,可以有效地''
将此列表中的所有元素组合在一起。
我希望你现在已经足够了。