我的加密工作正常但不完全正确:
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”。我怎样才能做到这一点? 谢谢。
答案 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")