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