我试图在发生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对象不可迭代
答案 0 :(得分:3)
您几乎肯定不希望以您使用它的方式使用sys.exit()
- 这将立即终止所有代码,这意味着您永远不会能够回到调用链,甚至只是尝试不同的循环迭代。
也许您想要continue
来尝试循环的另一次迭代?
答案 1 :(得分:0)
尝试:
if solved_sudoku:
return solved_sudoku