0

我知道这是一个常见问题,但我找不到适合我的案例的解决方案。我在 Python 中的 for 循环时遇到了问题。当我用这件作品运行程序时

for j in range(len(line1)- 3):
    print 'j =', j
    spl1 = spline(line1[j], line1[j + 1], line1[j + 2], line1[j + 3], t, Nu)

print 'spl1 ='
matrix.show(spl1)

我得到一个输出:

Traceback (most recent call last):
File "D:\work\curvature\test\twisted\cardinal_spline.py", line 272, in <module> main()
File "D:\work\curvature\test\twisted\cardinal_spline.py", line 111, in main 
matrix.show(spl1)
UnboundLocalError: local variable 'spl1' referenced before assignment

此外,它不打印 j 变量。我看不出那里有任何错误。“spl1”是在 for 循环中分配的,但看起来解释器只是跳过了它。

请指出错误。

4

3 回答 3

3

在 Python 中,循环没有单独的作用域,因此如果进入循环,spl1变量将被设置为“全局”。

line1 变量可能只有 3 个或更少的字符长,因此从未进入循环,因此从未分配过该变量。

于 2012-07-23T14:57:02.667 回答
1

len(line1) <= 3由于在某些情况下,您的 for 循环根本不会执行,因此spl1没有分配。

于 2012-07-23T14:55:15.240 回答
1

我猜你的长度line1小于或等于 3。(range(0)返回一个空列表range(-1),等等)正因为如此,你的 for 循环没有任何东西可以迭代,因此它不会执行代码块。

于 2012-07-23T14:57:13.753 回答