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

I. 私が間違っていない限り、r+モードを使用しても実際にファイルを編集しているわけではありませんletterwrite実際にファイルに変更を加えるには、引き続き を使用する必要があります。

Ⅱ.あなたは興味があるかもしれません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 に答える
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 に答える