缺少来自加密的信件

时间:2014-02-22 20:56:50

标签: python encryption dictionary

我的加密工作正常但不完全正确:

d1={'H':'Z','E':'P','l':'O','O':'J'}

def encrypt(table,string):
    encrypted=""
    for k,v in table.iteritems():
        k=string[0:]
        encrypted+=v
    return encrypted

print encrypt(d1,"HELLO")

这将返回“ZPOJ”。它需要返回“ZPOOJ”。我怎样才能做到这一点? 谢谢。

2 个答案:

答案 0 :(得分:0)

看起来有点像家庭作业所以我会尝试只给出提示......

您当前代码中的问题:

k=string[0:]

这会在每个循环中获取整个字符串,您可能只需要一个字符。 在任何情况下,你都没有在循环中使用k。

encrypted+=v

这是您添加到结果的唯一位置,但您直接从字典值中获取值。您最终得到一个包含字典的所有值的字符串,忽略您正在加密的明文。

您希望循环显示纯文本字符串,并为每个字符查找字典中的相应值。像这样:

for k in string:
    encrypted = encrypted + table[k]

请注意,词典中的小写字母为L.

答案 1 :(得分:0)

以下代码有效。您应该循环string而不是table。确保string中使用的所有字符都被定义为table中的键。 l中的L替换为d1

d1={'H':'Z','E':'P','L':'O','O':'J'}
def encrypt(table,string): 
    encrypted="" 
    for c in string:
        encrypted+=table[c]
    return encrypted

print encrypt(d1,"HELLO")