2016-06-21 5 views
0

J'essaie d'utiliser l'algorithme de remplissage d'inondation pour remplir l'une des deux couleurs de cette courbe, qui est définie par le rouge étant 1 et le bleu étant zéro. Cependant, quand j'essaye d'exécuter mon code, il indique que la syntaxe pour la ligne if m[i][j]=1: est incorrecte. Des conseils sur la façon de déboguer cela? Merci. Dans ce code m est la matrice je travaille et i et j sont mes variables xypython Récursive 4 voies Remplissage d'une courbe

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) 

Répondre

2

Vous ne publiez pas l'erreur exacte, mais je peux vous dire que cela est inexact:

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

m[i,j] est incorrect. i,j est un tuple, mais les indices de la liste (la chose à l'intérieur des m[] entre parenthèses) ne peuvent être des entiers

2

Les valeurs doivent être comparées pour l'égalité en utilisant l'opérateur == plutôt qu'un seul = qui est utilisé pour les expressions d'affectation. Donc, vous devez remplacer if m[i][j]=1: par if m[i][j] == 1. Et BTW, il a dit "erreur de syntaxe", donc vous devriez vérifier la syntaxe de la ligne en surbrillance. C'est votre indice pour le débogage.