2015-12-19 213 views
0

這是從我正在開發的Sudoku解算器中取出的一些代碼。我改變了一些它縮小了,但它的根本問題仍然存在。如果我要運行它,它將一次通過solve函數,但隨後返回到add1函數的board[x][y] += 1部分,它將返回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更改爲其他變量名稱,以免它與您現有的int變量row發生衝突。

相關問題