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
顯然'n'是'for'循環中定義的一個整數。那麼'n [x + p]'是什麼意思? – Selcuk
你的第二個問題就是'p'沒有被定義在任何地方,除非它是全局的。 – Ben