如何更正这行代码的缩进?

2024-06-01 03:08:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一些家庭作业,我好像也在什么地方搞砸了。无效语法出现在第8行,我假设这是缩进问题。有没有办法在不重写的情况下纠正这个问题

def solve(puzzle,row=0,col=0):
    if puzzle[row][col]>0:
        next_row,next_col=get_next(puzzle,row,col)
    if next_row is None:
        return puzzle
    else:
        solve(puzzle,next_row,next_col) 
    else:                                              # line 8
         options=get_options(puzzle,row,col)
    if not options:
        return None
    else:
        for i in options:
            new_puzzle=copy_puzzle(puzzle)
            new_puzzle[row][col]=i
            result=solve(new_puzzle)
        if result is not None:
            return result

第二个{{CD1>}应该结束递归的这个分支,导致函数回溯并考虑先前填充的单元格的不同值。


Tags: nonenewgetreturnifisnotcol
2条回答

不能将else语句放在具有相同缩进的另一个else语句之后。 只能在if或elif之后编写else语句

正确答案似乎是:

def solve(puzzle,row=0,col=0):
    if puzzle[row][col]>0:
        next_row,next_col=get_next(puzzle,row,col)
        if next_row is None:
            return puzzle
        else:
            solve(puzzle,next_row,next_col) 
    else:
        options=get_options(puzzle,row,col)
        if not options:
            return None
        else:
            for i in options:
                new_puzzle=copy_puzzle(puzzle)
                new_puzzle[row][col]=i
                result=solve(new_puzzle)
            if result is not None:
                return result

您的代码可能如下所示:

def solve(puzzle,row=0,col=0):
    if puzzle[row][col]>0:
        next_row,next_col=get_next(puzzle,row,col)
        if next_row is None:
            return puzzle
        else:
            solve(puzzle,next_row,next_col) 
    else:
        options=get_options(puzzle,row,col)

        if not options:
            return None
        else:
            for i in options:
                new_puzzle=copy_puzzle(puzzle)
                new_puzzle[row][col]=i
                result=solve(new_puzzle)
            if result is not None:
                return result

相关问题 更多 >