切断功能

时间:2013-11-12 04:18:46

标签: python sudoku nonetype

我试图在发生NoneType时关闭该功能,但即使没有NoneType它也会继续切断。

def solver(integer):
    try:
        i  = integer.index(0)
    except ValueError:
        return integer

    used_integer = [integer[j] for j in range(81)
        if not ((i-j)%9 * (i//9^j//9) * (i//27^j//27 | (i%9//3^j%9//3)))]

    for j in range(1, 10):
        if j not in used_integer:
            solved_sudoku = solver(integer[:i]+[j]+integer[i+1:])

            if solved_sudoku is not None:
                return solved_sudoku

        if j in used_integer:
            sys.exit('Error')

065000008 700860400 000020009 040001002 000207000 300500070 400050000 001079003 9000002 * 66 *< ------- 具有重复值的数独谜题

当我这样做时,我收到班级错误

class Sudoku(list):

def __init__(self, content):

     list.__init__(self, [int(i) for i in content.split()]

     if isinstance(content, str) else content)

def __str__(self):

     return '\n'.join(

          ' '.join([(str(j) if j != 0 else '-')

                for j in self[i*9:(i+1)*9]]) for i in range(9))

我收到错误(TypeError:NoneType对象不可迭代

2 个答案:

答案 0 :(得分:3)

您几乎肯定不希望以您使用它的方式使用sys.exit() - 这将立即终止所有代码,这意味着您永远不会能够回到调用链,甚至只是尝试不同的循环迭代。

也许您想要continue来尝试循环的另一次迭代?

答案 1 :(得分:0)

尝试:

if solved_sudoku:
    return solved_sudoku