Python 加密中丢失的字母

Python 加密中丢失的字母,python,encryption,dictionary,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”。我

我的加密几乎正常工作,但不完全正常:

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”。我如何才能使它工作?
谢谢

看起来有点像家庭作业,所以我会尽量只给出提示

当前代码中的问题:

k=string[0:]
这将在每个循环中获取整个字符串,您可能只需要其中的一个字符。 在任何情况下,都不能在循环中使用k

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

您希望在纯文本字符串上循环,并在字典中查找每个字符的对应值。大概是这样的:

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

请注意,您的字典中有一个小写的L。

以下代码有效。您应该循环使用
字符串
,而不是
。确保
字符串中使用的所有字符都定义为
表中的键<在
d1
中,code>l
替换为
l

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")

它返回“ZPOJ”,它需要返回“ZPOJ”。“我是不是遗漏了什么?您的输出和您需要的是相同的。已修复。谢谢,很抱歉。没问题,你可能会得到更多的帮助,以及标记这是写在语言是的,谢谢大家。这是家庭作业,但是老师们的反应真的很慢,我知道我已经接近了,而且应该是周一晚上(还有很多),我明白了,谢谢。这段代码帮助我更好地理解了我在做什么,并帮助我编写了很多我必须为这项任务编写的代码。我很感激你清晰的代码和解释。