Python中的返回问题

问题描述 投票:0回答:1

作为第一个项目,我正在做一个数独求解器:我使用的是回溯法,它似乎可以单独使用,但我想把它纳入一个更大的程序中。

问题是,当我在解完格子后简单地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)))

有什么想法和解释吗?我怎样才能调用这个函数,把我的网格给它,然后让它返回一个解出的网格?

python python-2.7 return sudoku
1个回答
0
投票

如果第一个条件评估为真。

if grid[y][x] == 0:

求解函数返回 None,不 grid.

© www.soinside.com 2019 - 2024. All rights reserved.