2016-06-21 3 views
0

Я пытаюсь использовать алгоритм заполнения заливки, чтобы заполнить один из двух цветов этой кривой, который определяется как красный, 1, а синий - ноль. Однако, когда я пытаюсь запустить свой код, он говорит, что синтаксис для строки if m[i][j]=1: неверен. Любые советы о том, как отладить это? Благодарю. В этом коде m матрица Я работаю в и i и j моих ху переменныхpython 4 way recursive Flood Заполнение кривой

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.

И BTW, он сказал «Синтаксическая ошибка», поэтому вам нужно проверить синтаксис выделенной строки. Это ваш намек на отладку.