0
def partial(f,h=0.0001):
    #checker
    x=y=z=1
    fx=(f(x+h,y,z)-f(x,y,z))/h
    fy=(f(x,y+h,z)-f(x,y,z))/h
    fz=(f(x,y,z+h)-f(x,y,z))/h
    if(fx==0):
        p=0
    elif(fy==0):
        q=0
    elif(fz==0):
        r=0
    fx=fy=fz=0
    a=15
    c=5
    for m in range (-a,a,c):
        for n in range (-a,a,c):
            for o in range (-a,a,c):
                x=m
                y=n
                z=o
                if(p==0):
                    x=0
                elif(q==0):
                    y=0
                elif(r==0):
                    z=0
                fx=(f(x+h,y,z)-f(x,y,z))/h
                fy=(f(x,y+h,z)-f(x,y,z))/h
                fz=(f(x,y,z+h)-f(x,y,z))/h
                arrow(pos=vector(m,n,o),axis=vector(+fx,+fy,+fz),color=color.red)
                print z
    print fx,fy,fz
    return 0

我哪里错了?我之前已经声明p过,但它说p是在分配之前引用的。

4

1 回答 1

0

您可能会在 if/elif 语句的 for 循环中使用p,qr。这意味着必须定义这些,否则您将面临“UnboundLocalError: local variable '_' referenced before assignment”错误的风险。但是,当您根据什么、 和是调用函数时,您只定义其中fx之一fyfz

最简单的解决方案是添加这一行:

p = q = r = -1

在您的 if 语句上方将其中一个设置为 0。(在第 6 行附近)

现在,它们都将被定义,你可以在你的 for 循环中引用它们,而不管哪一个被设置为 0。

于 2015-04-26T18:33:35.880 回答