UnboundLocalError:赋值之前引用了局部变量'n'-如何识别和删除此变量?还是在这种情况下进行调试?

时间

我仍然为循环做了一个适当的选择,但是我收到了以下错误。

UnboundLocalError:赋值之前引用了局部变量“ n”

如何解决以上错误?

import numpy as np
n=0
import math
def polygonPerimeter(x,y):
    for i in range(np.size(x)):
        n = n +math.sqrt((x[i]-x[i+1])**2+(y[i]-y[i+1])**2)
    P=n
    return P

print(polygonPerimeter(np.array([1, 3, 3, 4, 7, 6, 1]), np.array([1, 1, 2, 3, 3, 5, 5])))
美国科技公司

Python变量始终在两种范围内起作用-全局和局部。在您的情况下,n=0是全局定义的变量。您不能直接在函数中访问它。您可以global为此目的使用关键字。

下面的代码可以正常工作,我已经对其进行了测试:

import numpy as np
n=0
import math
def polygonPerimeter(x,y):
    global n
    # np.size(x) returns value 7 
    for i in range(np.size(x)-1):
        n = n +math.sqrt((x[i]-x[i+1])**2+(y[i]-y[i+1])**2)
    P=n
    return P

print(polygonPerimeter(np.array([1, 3, 3, 4, 7, 6, 1]), np.array([1, 1, 2, 3, 3, 5, 5])))

您可以使用此方法,也可以n=0在函数内部局部定义变量在for循环内部,对于x[i+1]numpy数组中的最后一个元素,它将失败,因此我将for循环范围更改为np.size(x)-1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章