Python 检查数组是否没有';t不包含负数,如果包含负数,请重新运行函数

Python 检查数组是否没有';t不包含负数,如果包含负数,请重新运行函数,python,arrays,numbers,output,Python,Arrays,Numbers,Output,我今天的任务是创建一种方法来检查函数的输出是否包含负数,如果包含负数,那么我必须运行函数,直到它不包含负数 稍后我将在文章中发布完整代码,但这是我尝试的解决方案: def evecs(matrixTranspose): evectors = numpy.linalg.eig(matrixTranspose)[1][:,0] return evectors if any(x<0 for x in evectors) == False: print(evecto

我今天的任务是创建一种方法来检查函数的输出是否包含负数,如果包含负数,那么我必须运行函数,直到它不包含负数

稍后我将在文章中发布完整代码,但这是我尝试的解决方案:

def evecs(matrixTranspose):
     evectors = numpy.linalg.eig(matrixTranspose)[1][:,0]
     return evectors


if any(x<0 for x in evectors) == False:
    print(evectors)
def evecs(矩阵传输):
evectors=numpy.linalg.eig(基质转运)[1][:,0]
返回向量

如果有(x您没有声明变量
evectors
,而不是在您的函数
evecs
的范围内

evectors = evecs(matrixTranspose)

if any(x<0 for x in evectors) == False:
    print(evectors)

在python中,空格非常重要。检查您的缩进不要比较布尔值,而是使用自然的方式:
如果没有(xDo你明白吗?是的。OP定义了函数,似乎从未使用它或存储它的任何输出,然后尝试访问结果。这是一个相当尴尬的错误。我的错。谢谢你的帮助。我继续并实现了它,即使没有任何错误,我仍然没有得到Evactors部分的任何输出。这里这是我的完整代码,以及我得到的输出。我的错误在哪里?
def MarkovChain(n,s) :
    """

    """
    matrix = []
    for l in range(n) :
        lineLst = []
        sum = 0
        crtPrec = precision
        for i in range(n-1) :
            val = random.randrange(crtPrec)
            sum += val
            lineLst.append(float(val)/precision)
            crtPrec -= val
        lineLst.append(float(precision - sum)/precision)
        matrix2 = matrix.append(lineLst)
    print("The intial probability matrix.")    
    print(tabulate(matrix))
    matrix_n = numpy.linalg.matrix_power(matrix, s)  
    print("The final probability matrix.")
    print(tabulate(matrix_n))
    matrixTranspose = zip(*matrix_n)

    return matrixTransponse    # issue 2

# issue 1
def evecs(matrixTranspose):
    evectors = numpy.linalg.eig(matrixTranspose)[1][:,0]
    return evectors

matrixTranponse = MarkovChain(4, 10000000000)     # issue 3

# issue 4
evectors = evecs(matrixTranspose)

if any(x<0 for x in evectors) == False:
    print(evectors)