2015-12-19 6 views
0

Это код, полученный из решателя Sudoku, над которым я работаю. Я немного изменил его, чтобы уменьшить его, но основная проблема этого все еще существует. Если бы я запускал это, он бы прошел через функцию solve один раз, но затем, вернувшись в board[x][y] += 1 часть функции add1, он возвращает TypeError: list indices must be integers, not list. Я не могу найти ответы. Невозможно понять, почему список передается вместо простых чисел. Пожалуйста помоги!(Python) TypeError: индексы списка должны быть целыми числами, а не списком

def init_board(): 
    board = [[],[],[],[],[],[],[],[],[]] 
    for i in board: 
     for x in range(0,9): 
      i.append(0) 
    return board 

def add1(x, y): 
    board[x][y] += 1 

def solve(row, column): 
    add1(row, column) 
    for row in board: 
     print(row) 
    if True: 
     if row == 8 and column == 8: 
      return 
     if column == 8: 
      row += 1 
      column = 0 
     if column < 8: 
      column += 1 
     solve(row, column) 

board = init_board() 

solve(0,0) 

ответ

1

Где вы положили for row in board: вы перебор board (список списков) и настройкой row для каждого внутреннего списка. Впоследствии, когда вы звоните solve(row, column), вы проходите мимо row, который теперь является списком.

Если это не то, что вы намеревались, измените row на for row in board: на другое имя переменной, чтобы оно не столкнулось с вашей существующей переменной int row.

 Смежные вопросы

  • Нет связанных вопросов^_^