作为第一个项目,我正在做一个数独求解器:我使用的是回溯法,它似乎可以单独使用,但我想把它纳入一个更大的程序中。
问题是,当我在解完格子后简单地print()格子时,它工作得很好(根据下面的代码示例)。
def solve(grid):
for y in range(9):
for x in range(9):
if grid[y][x] == 0:
for n in range(1,10):
if possible(grid,x,y,n):
grid[y][x] = n
solve(grid)
grid[y][x] = 0
return
print(numpy.matrix(grid))
c = raw_input("More? [y/n]\n")
if c == 'n':
quit()
else:
pass
solve(grid)
但是当我试图返回网格而不是打印它时,它就不工作了,并返回[[None]]。
def solve(grid):
for y in range(9):
for x in range(9):
if grid[y][x] == 0:
for n in range(1,10):
if possible(grid,x,y,n):
grid[y][x] = n
solve(grid)
grid[y][x] = 0
return
return grid
print(numpy.matrix(solve(grid)))
有什么想法和解释吗?我怎样才能调用这个函数,把我的网格给它,然后让它返回一个解出的网格?
如果第一个条件评估为真。
if grid[y][x] == 0:
求解函数返回 None
,不 grid
.