我试图将每个元素匹配matches[0]
到每个元素matches[1]
并最终获得输出哪个元素与哪个匹配。但在递归过程中,变量path
变为None
.
功能
def improve(ncipher,x): #probably do not have any problem
for i in x:
try:
if x[i]!=ncipher[i]:
return 0
except:
ncipher[i]=x[i]
return ncipher
def find_indexes(matches,cipher,path): #the function causing problems
print 'matches=',matches,'cipher=',cipher,'path=',path,'\n'
if len(matches)==0:
return [(0)]
for x in matches[0]:
print 'x=',x,'path=',path
cipher=improve(cipher,x[1])
if cipher==0:
return [(0)]
path=find_indexes(matches[1:],cipher,path)
if path==[(0)]:
return [(0)]
else:
print 'path=',path
return path.append((x))
输出
matches= [[['season', {'1': 's', '3': 'a', '2': 'e', '5': 'n', '4': 'o'}]], [['month', {'8': 'h', '5': 'n', '4': 'o', '7': 't', '6': 'm'}]]] cipher= {} path= [0]
x= ['season', {'1': 's', '3': 'a', '2': 'e', '5': 'n', '4': 'o'}] path= [0]
matches= [[['month', {'8': 'h', '5': 'n', '4': 'o', '7': 't', '6': 'm'}]]] cipher= {'1': 's', '3': 'a', '2': 'e', '5': 'n', '4': 'o'} path= [0]
x= ['month', {'8': 'h', '5': 'n', '4': 'o', '7': 't', '6': 'm'}] path= [0]
matches= [] cipher= {'1': 's', '3': 'a', '2': 'e', '5': 'n', '4': 'o', '7': 't', '6': 'm', '8': 'h'} path= [0]
path= [0]
path= None
Traceback (most recent call last):
File "E:\timepass\py\interviewstreet\fb_cipher.py", line 115, in <module>
find_match(message,words)
File "E:\timepass\py\interviewstreet\fb_cipher.py", line 67, in find_match
sol_indexes=find_indexes(matches,{},[0])
File "E:\timepass\py\interviewstreet\fb_cipher.py", line 24, in find_indexes
return path.append((x))
AttributeError: 'NoneType' object has no attribute 'append'
问题
- 为什么在递归过程中会
path
变成?None
- 我该如何克服这个问题并存储相互匹配的元素?