You need to enable JavaScript to run this app. Python数独回溯算法运行报TypeError: cannot unpack non-iterable int object问题
优惠活动
大模型
产品
解决方案
定价
更多

Python数独回溯算法运行报TypeError: cannot unpack non-iterable int object问题

问题原因及解决方法

1 报错直接原因

你的find_empty_box函数返回值逻辑错误:

  • 当前函数逻辑是检查第一个格子grid[0][0],如果等于0就返回(x,y)元组,否则直接返回整数0。你试图把单个整数0赋值给row, col两个变量,自然触发「无法解包非可迭代整数对象」的报错。
  • 同时函数遍历逻辑完全错误:内层循环的else分支不应该直接return,应该遍历完所有格子都没找到空(也就是没有0)的时候,再返回None, None匹配你后续if row is None的判断。

2 附带逻辑错误

你的Answer_Valid函数缩进错误:return True现在写在3x3宫行循环的内部,等于只检查了宫的第一行就直接返回True,后续两行根本没检查,会导致数独验证逻辑失效。

修正后的完整代码

import numpy as np

grid = [[5,3,0,0,7,0,0,0,0], 
        [6,0,0,1,9,5,0,0,0],
        [0,9,8,0,0,0,0,6,0],
        [8,0,0,0,6,0,0,0,3],
        [4,0,0,8,0,3,0,0,1],
        [7,0,0,0,2,0,0,0,6],
        [0,6,0,0,0,0,2,8,0],
        [0,0,0,4,1,9,0,0,5],
        [0,0,0,0,8,0,0,7,9]]

print(np.matrix(grid))

def find_empty_box(puzzle): 
    for x in range(9):
        for y in range(9):
            if puzzle[x][y] == 0:
                return x, y 
    # 遍历完所有格子都没找到空值,返回None匹配后续判断
    return None, None

def Answer_Valid(puzzle, guess, row, col): 
    row_values = puzzle[row]    
    if guess in row_values:
        return False

    column_values = [puzzle[i][col] for i in range(9)]
    if guess in column_values:
        return False

    row_start = (row // 3) * 3
    col_start = (col // 3) * 3

    for x in range(row_start, row_start + 3):
        for y in range(col_start, col_start + 3):
            if puzzle[x][y] == guess:
                return False
    # 所有检查都通过再返回True,缩进放到循环外面
    return True

def Solver(puzzle):
    row, col = find_empty_box(puzzle)

    if row is None:
        return True

    for guess in range(1,10):
        if Answer_Valid(puzzle, guess, row, col):
            puzzle[row][col] = guess

            if Solver(puzzle):
                return True

        puzzle[row][col] = 0

    return False

print(Solver(grid))
print(np.matrix(grid))

内容的提问来源于stack exchange,提问作者HiddenSquid123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 19:00:01