首页 > 解决方案 > 当我将数组中的具体值与整数值进行比较时出现 ValueError

问题描述

我在以下代码中收到标题中提到的错误:

import numpy




def solve(index):
    if (index >80):
        return sudoku


    rowIndex = int(index/9)
    columnIndex = index % 9


    if sudoku[rowIndex][columnIndex]!= 0:
        return solve(index+1)

    for input in range (1,10):
        if checking(rowIndex, columnIndex, input):
            sudoku[rowIndex][columnIndex] = input
            if solve(index + 1):

                return sudoku
            sudoku[rowIndex][columnIndex]=0

    return False






solve(start)






我已经查看了对这个错误的一些贡献,我对错误的理解是,如果将两个数组相互比较或者将整个数组与一个标量值进行比较,就会得到它。但是,我使用数组的唯一 if 语句是数组中的具体值,例如array[i][j] =! 0 ,令我惊讶的是,代码在最后一次递归调用之前完全可以正常工作。

标签: pythonarrays

解决方案


这是因为您从solve() 返回np 数组或布尔值。
尝试返回 None 而不是 False。

def solve(index):
    if (index >80):
        return sudoku

    rowIndex = int(index/9)
    columnIndex = index % 9

    if sudoku[rowIndex][columnIndex]!= 0:
        return solve(index+1)

    for input in range (1,10):
        if checking(rowIndex, columnIndex, input):
            sudoku[rowIndex][columnIndex] = input
            if not solve(index + 1) is None:
                return sudoku
            sudoku[rowIndex][columnIndex]=0

    return None

并更改 if 条件以适应:

if not solve(index + 1) is None:

推荐阅读