Python中的返回问题

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

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

给TA打赏
共{{data.count}}人
人已打赏
未分类

在Python中用asyncio关闭一个连接。

2022-9-8 19:48:41

未分类

根据类的大小创建对象时的内存分配量。

2022-9-8 19:48:43

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索