2012-07-23 2 views
0

나는 이것이 일반적인 질문이지만 내 경우에 대한 해결책을 찾을 수 없다는 것을 알고있다. 파이썬에서 for-loop를 사용하는 동안 문제가 발생했습니다. 나는이 작품파이썬 : for-loop에서 할당 후에 할당 전에 로컬 변수가 참조됨

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-loop에 지정되어 있지만 인터프리터가 건너 뛴 것처럼 보입니다.

실수로 지적하십시오.

+1

왜 'spl1' 변수를 루프에서 업데이트합니까? 이 값은 각 반복에서 겹쳐 쓰여집니다. – catchmeifyoutry

답변

2

어떤 경우에는 len(line1) <= 3 때문에 for 루프가 전혀 실행되지 않으므로 spl1이 지정되지 않습니다.

4

파이썬에서는 루프가 별도의 범위를 보유하지 않으므로 spl1 변수 은 루프가 입력되면이 "전역 적"으로 설정됩니다.

line1 변수가 3 자 이하로 길어서 루프가 입력되지 않으므로 변수가 할당되지 않습니다. 나는 당신의 line1의 길이를 추측하고있어

2

는 (등 range(-1)처럼 range(0) 빈 목록을 반환) 그 때문에, 당신의 루프가 반복 할 아무것도하지 않고 3보다 작거나 같은 따라서 해당 코드 블록을 실행하지 않습니다.

관련 문제