1

这是我的代码:

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 的业余爱好者,但是当我运行该函数时,文件保持不变。我究竟做错了什么?

4

2 回答 2

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(但这可能很危险,因为您正在读取它)。

于 2012-05-26T05:32:12.193 回答
2

I. 除非我弄错了,否则您实际上并没有r+通过分配letter. 您仍然需要使用write实际对文件进行更改。

二、您可能对以下内容感兴趣string.translate

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

In [115]: s = 'abcdef'

In [116]: s.translate(t)
Out[116]: 'baddef'
于 2012-05-26T05:50:06.423 回答