使用替换时避免重叠



我正在玩一个简单的加密程序,我希望它能够工作,以便每个特定的符号总是会变成另一个特定的符号。这可能不是最好的描述,但我不知道该怎么说......举个例子:

">

a"将是"h">

">

A"将是"k">

">

h"将是"W">

text_1 = "aAh"
text_2 = text_1.replace('a', 'h')
text_3 = text_2.replace('A', 'K')
text_4 = text_3.replace('h', 'W')
print text_4
#the output is "WKW"
#I need the output to be "hKW"

问题是,我为每个符号替换都使用 replace-命令,所以如果我们假设代码的输入顺序与我们的示例相同,并且我要加密的消息是"aAh",那么我希望加密的输出是"hKW",但实际上我们得到这个输出而不是"WKW"。

我知道为什么会发生这种情况,所以我的问题是:

如何让程序按照我想要的方式加密消息?

您遇到的问题是您将更改应用于中间字符串(因此以前的更改会影响结果(

请考虑尝试计算每个字符的初始字符串的预期更改,并在之后生成最终字符串。

您可以使用字典进行字符映射,然后使用生成器表达式来翻译字符:

m = {'a': 'h', 'A': 'K', 'h': 'W'}
print(''.join(m.get(c, c) for c in text_1))

这输出:

hKW

最新更新