我如何在python中取消绑定

时间:2014-03-26 02:28:14

标签: python

所以我试图创建一个文本加密程序,将文本中的字母更改为不同的ordred字母,但是a = key [1](Key是重新排列的字母表的名称)但是它没有工作,因为关键[1]不能被分配到一个litteral,任何关于如何得到这个的想法。

2 个答案:

答案 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,可以有效地''将此列表中的所有元素组合在一起。

我希望你现在已经足够了。