2017-05-18 2 views
0

Ich versuche, Sudoku zu erstellen, aber ich bekomme diesen Fehler. Ich denke, es ist wegen der range Linie; vielleicht mache ich es falsch, aber range(int(numb/numb+3)) funktioniert auch nicht wirklich. Danke für die Hilfe.TypeError: 'float' Objekt kann nicht als eine ganze Zahl interpretiert werden 4

File "D:\Games\Python\sudokuV2Test2.py", line 83, in estDansSousMatrice 
    for i in range(bl, bl+3): 
TypeError: 'float' object cannot be interpreted as an integer" 

Dies ist der Code:

def estDansSousMatrice(grille,l,c,v): 
    bc=(c/3)*3 
    bl=(l/3)*3 

    for i in range(bl, bl+3): 
     for j in range(bc,bc+3): 
      if grille[i][j]==v: 
       return True 
    return False 

Antwort

1

Da Ihr vorher bc und bl teilen und dann durch 3 multipliziert wird, sagen wir Eingang c = 3 und l = 3 die Ergebnisse für diese beiden wäre 3.0 stattdessen tun for i in range(int(bl),int(bl)+3): und for j in range(int(bc),int(bc)+3):

+0

Vielen Dank für die Hilfe. – Henrique

0

Um klar zu sein, können Sie die Konvertierung zurück zuumgehenindem man sie niemals zum Schweben bringt. Der Operator // führt eine ganzzahlige Division durch und schneidet das Ergebnis ab. Auf diese Weise können Sie fast Ihren gesamten Originalcode behalten.

def estDansSousMatrice(grille,l,c,v): 
    bc=(c//3)*3 # Different 
    bl=(l//3)*3 # Different 

    for i in range(bl, bl+3): 
     for j in range(bc,bc+3): 
      if grille[i][j]==v: 
       return True 
    return False 
Verwandte Themen