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