解始终返回x = 0

时间:2019-06-05 05:06:01

标签: python function exception scope

使用此代码时,我得到的值始终返回0

def fi(arr,mini):
    print(arr)
    if(len(arr)<3):
        x = mini
        return 
    for j in range(1,(math.ceil(len(arr)/2) )):
        l1 = 2*j+1
        if(med(arr[0:l1])<mini):
            mini= med(arr[0:l1])
            print("hello", mini)
    fi(arr[1:],mini)
    return x

3 个答案:

答案 0 :(得分:1)

仅在x时定义len(arr) < 3。在其他情况下,它是未分配的。您应在if块之前 或在else块内添加默认值,具体取决于您要执行的操作。

答案 1 :(得分:0)

在将x分配给mini之前,您尚未声明。您的函数默认应返回什么?

答案 2 :(得分:0)

您定义了局部变量“ x”,其范围仅限于if块,并且您试图从函数中返回此变量,因此它变得不确定。最好在函数中定义局部变量x,并为其提供一些默认值,该默认值应由函数返回。

def fi(arr,mini):
    x = some_default_value
    print(arr)
    if(len(arr)<3):
        x = mini
        return 
    for j in range(1,(math.ceil(len(arr)/2) )):
        l1 = 2*j+1
        if(med(arr[0:l1])<mini):
            mini= med(arr[0:l1])
            print("hello", mini)
    fi(arr[1:],mini)
    return x