为什么Python函数不返回结果?

2024-06-10 17:11:09 发布

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

我正在尝试编写一个Python函数,它可以在计算幻方时返回“True”或“False”。幻方是一个矩阵,它的行和、列和以及两条对角线的和都是相同的。(矩阵的一条对角线从左上角到右下角,另一条对角线从右上角到左下角。)

这是我的代码:

def isMagic(A3):
    dim = A3.shape[0] * A3.shape[1]
    construct = np.arange(1,dim+1)
    if A3.shape[0] == A3.shape[1]:
        exist = []
        for r in range(len(A3)):
            for c in range(len(A3)):
                exist.append(A3[r,c] in construct)
        if all(exist):
            def all_same(items):
                return all(x == items[0] for x in items)
            dig_1 = sum(np.diag(A3))
            dig_2 = sum(np.diag(np.fliplr(A3)))
            dig = all_same(np.array([dig_1, dig_2]))
            column = all_same(np.sum(A3, axis = 1))
            row = all_same(np.sum(A3, axis = 0).transpose())
            if all(dig, column, row):
                return True
            else:
                return False

但是,当我试图在一个幻方上测试我的代码时,该函数没有返回任何值:

^{pr2}$

我想知道是不是因为压痕?在


Tags: inforreturnifnpitemsalla3
1条回答
网友
1楼 · 发布于 2024-06-10 17:11:09

对于前两个if语句if A3.shape[0] == A3.shape[1]和{},请注意,如果条件为false,则不会返回任何(None)。如果所有的if条件都不满足,我想你应该返回False。然后只需将return False放在函数的末尾,这样当return True未到达时它就会运行:

def isMagic(A3):
    ...
    return False

相关问题 更多 >