<span class="label label-success">Text</span>
我哪里错了?我之前已声明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
。
答案 0 :(得分:0)
您可以在if / elif语句的for循环中使用p
,q
和r
。这意味着必须定义这些,否则您将面临“UnboundLocalError:局部变量'_'在分配之前引用”的风险,其中任何一个都会弹出错误。但是,您只能在调用函数时定义其中一个,具体取决于fx
,fy
和fz
是什么。
最简单的解决方案是添加以下行:
p = q = r = -1
将其中一个设置为0.(第6行)
现在,它们都将被定义,您可以在for循环中引用它们,无论哪个被设置为0.