这是从我正在处理的数独求解器中取出的一些代码。我改变了一点来缩小它,但它的根本问题仍然存在。如果我要运行它,它将通过solve
函数一次,但在返回board[x][y] += 1
函数的add1
部分后,它将返回TypeError: list indices must be integers, not list
。我找不到任何答案。无法弄清楚为什么传递列表而不仅仅是数字。请帮忙!
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)
答案 0 :(得分:1)
您放置for row in board:
的位置正在迭代board
(列表列表)并将row
设置为每个内部列表。随后当您致电solve(row, column)
时,您正在传递row
,现在是一个列表。
如果这不符合您的意图,请将row
中的for row in board:
更改为其他变量名,以免与现有的int变量row
发生冲突。