【问题标题】:Missing letter from encryption加密丢失的字母
【发布时间】:2014-03-24 12:04:27
【问题描述】:

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

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”。我怎样才能使这项工作? 谢谢。

【问题讨论】:

  • "这将返回“ZPOJ”。它需要返回“ZPOJ”。我在这里遗漏了什么吗?你的输出和你需要的是一样的。
  • 已修复。谢谢,对此感到抱歉。
  • 没问题,你可能会得到更多帮助,以及标记这是用什么语言编写的

标签: python encryption dictionary


【解决方案1】:

以下代码有效。您应该循环使用string 而不是table。确保string 中使用的所有字符都定义为table 中的键。 ld1 中被替换为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")

【讨论】:

  • 我知道了,谢谢。这段代码帮助我更好地理解了我在做什么,并帮助我编写了很多我必须为这个作业编写的代码。感谢您清晰的代码和解释。
【解决方案2】:

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

您当前代码中的问题:

k=string[0:]

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

encrypted+=v

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

您想遍历明文字符串并为每个字符在字典中查找相应的值。像这样的:

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

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

【讨论】:

  • 是的,谢谢大家。这是家庭作业,但导师们的反应真的很慢,而且我知道我已经很接近了,而且应该在星期一晚上交(还有很多事情要做)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
相关资源
最近更新 更多