2016-06-19 57 views
0

我是一个非常没有经验的程序员,所以我的代码可能非常混乱,但我试图用p square来编码可以得到每个像素方向的东西。每个像素范围都是黑色或白色,1或0,并在列表x中。我不明白为什么现在会抛出这个错误,因为我只改变了一件事。之前,所有的'if'都是'elif',但是我将其切换为1,其余部分如果是1像素可以有1个以上的方向。谢谢您的帮助!错误:文件“python”,第31行,在组织TypeError:只能连接列表(不是“int”)到列表

PS:抱歉超级杂乱的帖子和代码,我希望你们中的一些人能得到我想说的。

def organise(x): 
for n in range(len(x)-2*p): 
    if x[n] !=1: 
     direc.append(0) 
    else:  
     if (x[n-2*p-1] == 1 and x[n-p-1]==1) or (x[n-2*p-1] == 1 and x[n-p]==1) or (x[n-2*p] == 1 and x[n-p]==1) or (x[n-2*p+1]== 1 and x[n-p]==1) or (x[n-2*p+1]== 1 and x[n-p+1]==1): 
      direc.append(1) 
     if x[n-2*p+2]== 1 and x[n-p+1]==1: 
      direc.append(2) 
     if (x[n-p+2]==1 and x[n-p+1]==1) or (x[n-p+2]==1 and x[n+1]==1) or (x[n+2] == 1 and x[n+1]==1) or (x[n+p+2]==1 and x[n+1]==1) or (x[n+p+2]==1 and x[n+p+1]==1): 
      direc.append(3) 
     if x[n+2*p+2] == 1 and x[n+p+1]==1: 
      direc.append(4) 
     if (x[n+2*p-1]==1 and (x[n+p-1]==1 or x[n+p]==1)) or (x[n+2*p]==1 and x[n+p]==1) or (x[n+2*p+1]==1 and(n[x+p]==1 or n[x+p+1]==1)): 
      direc.append(1) 
     if x[n+2*p-2]==1 and x[n+p-1]==1: 
      direc.append(2) 
     if (x[n+p-2]==1 and (x[n+p-1]==1 or x[n-1]==1)) or (x[n-2]==1 and x[n-1]==1) or (x[n-p-2]==1 and (x[n-p-1]==1 or x[n-1]==1)):  
      direc.append(3) 
     if x[n-2*p-2]==1 and x[n-p-1]==1: 
      direc.append(4) 

这是行31 BTW(其也是在上面的代码,但没有行号那里,我认为)

if (x[n+2*p-1]==1 and (x[n+p-1]==1 or x[n+p]==1)) or (x[n+2*p]==1 and x[n+p]==1) or (x[n+2*p+1]==1 and(n[x+p]==1 or n[x+p+1]==1)): 

我没有张贴我的完整的代码,对不起。这里说到:

fill = "FILLER" 
test_list = [] 
p = 6 
pixels = [1,0,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,1,0,0,1,0,1,0,0,0,0,1,fill,fill,fill,fill,fill,fill,fill,fill,fill,fill,fill,fill,fill,fill] 
direc = [] 
new_direc = [] 
real_direc = [0] 
def organise(x): 
for n in range(len(x)-2*p): 
    if x[n] !=1: 
     direc.append(0) 
    else:  
     if (x[n-2*p-1] == 1 and x[n-p-1]==1) or (x[n-2*p-1] == 1 and x[n-p]==1) or (x[n-2*p] == 1 and x[n-p]==1) or (x[n-2*p+1]== 1 and x[n-p]==1) or (x[n-2*p+1]== 1 and x[n-p+1]==1): 
      direc.append(1) 
     if x[n-2*p+2]== 1 and x[n-p+1]==1: 
      direc.append(2) 
     if (x[n-p+2]==1 and x[n-p+1]==1) or (x[n-p+2]==1 and x[n+1]==1) or (x[n+2] == 1 and x[n+1]==1) or (x[n+p+2]==1 and x[n+1]==1) or (x[n+p+2]==1 and x[n+p+1]==1): 
      direc.append(3) 
     if x[n+2*p+2] == 1 and x[n+p+1]==1: 
      direc.append(4) 
     if (x[n+2*p-1]==1 and (x[n+p-1]==1 or x[n+p]==1)) or (x[n+2*p]==1 and x[n+p]==1) or (x[n+2*p+1]==1 and(n[x+p]==1 or n[x+p+1]==1)): 
      direc.append(1) 
     if x[n+2*p-2]==1 and x[n+p-1]==1: 
      direc.append(2) 
     if (x[n+p-2]==1 and (x[n+p-1]==1 or x[n-1]==1)) or (x[n-2]==1 and x[n-1]==1) or (x[n-p-2]==1 and (x[n-p-1]==1 or x[n-1]==1)):  
      direc.append(3) 
     if x[n-2*p-2]==1 and x[n-p-1]==1: 
      direc.append(4) 

for n in range(len(direc)): 
    if direc[n] != 0: 
     new_direc.append(direc[n]) 
for n in range(len(new_direc)-1): 
    if new_direc[n] != real_direc[-1]: 
     real_direc.append(new_direc[n]) 
del real_direc[0]   

print direc 
print new_direc 
print real_direc 
return direc 
+2

显然'n'是'for'循环中定义的一个整数。那么'n [x + p]'是什么意思? – Selcuk

+0

你的第二个问题就是'p'没有被定义在任何地方,除非它是全局的。 – Ben

回答

1
n[x+p]==1 or n[x+p+1]==1 

这是不对的。它应该是x [n]而不是相反。

相关问题