我的编码/密码有什么问题?

时间:2012-06-01 07:16:21

标签: python encode encryption

我的代码是用来替换某些字母(一个用e,e用a和s用3专门)不起作用,但我不太清楚错误是什么,因为它不是在改变文本文件我是喂它。

pattern = "ae|ea|s3"

def encode(pattern, filename):
  message = open(filename, 'r+')
  output = []
  pattern2 = pattern.split('|')
  for letter in message:
    isfound = false
    for keypair in pattern2:
      if letter == keypair[0]: 
        output.append(keypair[1])
        isfound = true
      if isfound == true:
       break;
    if isfound == false:
      output.append(letter)

  message.close()  

我现在试图想出这个问题一直在绞尽脑汁......

2 个答案:

答案 0 :(得分:0)

这是一个具有所需结果的快速实现,您需要自己修改它以读取文件等:

def encode(pattern, string):
    rep = {}
    for pair in pattern.split("|"):
        rep[pair[0]] = pair[1]

    out = []
    for c in string:
        out.append(rep.get(c, c))

    return "".join(out)

print encode("ae|ea|s3", "Hello, this is my default string to replace")
#output => "Hallo, thi3 i3 my dafeult 3tring to rapleca"

如果要修改文件,则需要专门告诉程序写入文件。只需附加到输出变量就不会改变它。

答案 1 :(得分:0)

它不会更改文本文件,因为您没有使用您创建的output替换文本文件。相反,此函数正在创建output字符串并将其放在函数末尾。从函数返回output字符串并将其存储在外部,或者通过写入文件而不附加来替换函数中的文件。

由于这似乎是一个练习,我宁愿不添加代码来执行此操作,因为您可能会从自己编写函数中学到更多知识。