为什么我的密码函数(python)出错?

时间:2012-05-26 05:26:39

标签: python design-patterns encode encryption

这是我的代码:

def encode(pattern, filename):
  pattern = ['a','e','s','3']
  message = open(filename, 'r+')
  for letter in message:
      if letter == pattern[0]: 
        letter == pattern[1]

      elif letter == pattern[1]:
        letter == pattern[0]

      elif letter == pattern[2]:  
        letter == pattern[3]

      else:
        continue

  message.close()  

代码中可能存在一些缺陷,因为我只是python的业余爱好者,但是当我运行该函数时,文件保持不变。我做错了什么?

2 个答案:

答案 0 :(得分:2)

===之间存在差异。 ==用于测试两个对象或基元是否相同,=用于为对象或基元分配值。

尝试进行这些更改:

for letter in message:
      if letter == pattern[0]: 
        letter = pattern[1] ## <-- change
      elif letter == pattern[1]:
        letter = pattern[0] ## <-- change
      elif letter == pattern[2]:  
        letter = pattern[3] ## <-- change
      else:
        continue

但是这只是为letter指定了一个值,它将在循环中的下一次迭代中被更改,你真正想做的是写入其他文件,或者写回message(但是这可能是危险的,因为你正在阅读它。)

答案 1 :(得分:2)

予。除非我弄错了,否则即使使用r+模式,您实际上并未编辑文件,只需对letter进行分配即可。您仍然需要使用write来实际更改文件。

II。您可能对string.translate

感兴趣
In [112]: t = string.maketrans('abc', 'bad')

In [115]: s = 'abcdef'

In [116]: s.translate(t)
Out[116]: 'baddef'