2016-06-21 40 views
0

我想使用洪水填充算法来填充这条曲线的两种颜色之一,这是用红色是1和蓝色是零定义。但是,当我尝试运行我的代码时,它说明线路if m[i][j]=1:的语法不正确。任何关于如何调试的建议?谢谢。在此代码m是矩阵我在工作和ij是我的xy变量蟒蛇4路递归洪水填充曲线

from pylab import * 
m=zeroes((100,100)) 

for i in range(100): 
    for j in range(100): 
     m[i,j]=sin(i+j+0.1*i*j+0.1*j*j)+cos(i-j+0.2*i*i) 

n=m.copy() 
n[n>0]=1 
n[n<0]=0 
imshow(n) 

def floodfill (m,i,j): 
    if m[i][j]=1: 
     m[i][j]=0 

     if i>0: 
      floodfill(matrix,i-1,j) 
     if i < len(m[y]) - 1: 
      floodfill(m, i+1, j) 
     if j>0: 
      floodfill(m, i, j-1) 

      floodfill(m, i, j-1) 

回答

2

你没有发布确切的错误,但我可以告诉你,这是不正确的:

m[i,j]=sin(i+j+0.1*i*j+0.1*j*j)+cos(i-j+0.2*i*i) 

m[i,j]不正确。 i,j是一个元组,但列表索引(在m[]括号里面的东西)只能是整数

2

值是使用==运营商,而不是被用于赋值表达式单一=平等进行比较。所以你应该用if m[i][j] == 1代替if m[i][j]=1:

顺便说一句,它确实说“语法错误”,所以你应该检查突出显示的行的语法。这是您调试的提示。