2012-05-12 52 views
0

我有一些问题在python中编写一个简单的加密/解密程序,只涉及用另一个数组替换一个数组的元素。我有两个数组,需要加密的数组和第一个元素相当于a,最后一个到z的关键字。简单的加密程序

我假设我将需要在第一个数组中的所有实例= key [0],等等,但我不知道如何去编写一些代码。一些提示或指导将不胜感激。

请注意,我无法导入任何库,我也没有教过字典。

跟进问题,但相关的问题。我将如何替换列表中相同值的所有元素。即如何将文本列表中的所有'a'值替换为密钥列表的第一个值?

for c in text:   
    if c == 'a': 
     c = key[0]    

给我一个错误: '功能' 对象未标化的

+0

这听起来像是你正在实现一个简单的替代密码的正确轨道。到目前为止您尝试了什么,以及您卡在哪里?这里有一个提示可能会使它更简单:考虑将密钥设为字典,以便在明文中看到字母a时,只需检查密钥['a']以查看要替换的字母。 – octern

+0

我不知道如何将它变成字典,我还没有被教过。老实说,我还没有得到任何东西,因为我无法想出实际编写代码的方法。我有每个组件的工作原理,但我不能把它放在一起。 – KarmaPoliceman

+1

这听起来像一个家庭作业,如果它是 – wich

回答

0

第一转换键进入一个字典,那么你可以使用一个简单的列表替换

key = {chr(ord('a')+i): e for i, e in enumerate(key)} 
encrypted = [key[e] for e in unencrypted] 

alteratively

encrypted = [key[ord(e) - ord('a')] for e in unencrypted] 
+0

还没有教过字典,我认为它是用列表/数组完成的。 我尝试的所有东西都给我“TypeError:'函数'对象不可自订” 如果可以帮忙,我已经更新了我的问题。 – KarmaPoliceman

0

我认为更简单的方法是:

def encrypt(iterable,encryption_dictionary): 
    itertype = type(iterable) 
    return itertype(''.join((encryption_dictionary[i] for i in iterable))) 

要创建encryption_dictionary,您可以使用

{key1:mappedvalue1,key2:mappedvalue2} 

等:表示对和 “” 对之间断裂。