2016-06-19 54 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]而不是相反。

相關問題