2012-05-26 61 views
1

这里是我的代码:为什么我得到我的密码函数(python)的错误?

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() 

可能是代码的一些瑕疵因为我只在蟒蛇一个业余爱好者,但是当我运行的功能,该文件保持不变。我究竟做错了什么?

回答

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(但是由于您正在阅读,这可能会很危险)。

+0

+1。 'letter'也可能包含换行符和/或回车符。 – bernie

+0

我尝试过,结果虽然相同。我认为下面的海报可能是对的东西,写功能需要使用,虽然不知道如何.. – user1390754

+0

@ user1390754请注意我的帖子的最后一段,我说'你真正想做的是写给其他人文件' –

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' 
+0

如果你真的想高效就地编辑,那么mmap是一个很好的解决方案... –

相关问题