2016-10-12 1 views
0

파이썬 3.5를 사용하고 있습니다.While 루프 : UnboundLocalError : 할당 전에 참조 된 로컬 변수

그래서 긍정적 인 float 입력으로 x와 y를 취한 다음 R = x - N * y를 계산하고 반환합니다. 여기서 N은 가장 큰 정수이므로 x> N * y입니다. .

나는이 기능을 만든 : 다음

def floatme(x,y): 

    N = 1 

    while x <= N * y: 
     R = x - N * y 
     N = N+1 

    return R 

하지만를 내가받을 다음과 같은 오류 내 기능 실행시 : 나는 주위 검색

지역 변수 'R'할당하기 전에 참조 :

UnboundLocalError을 함수의 할당 된 변수가 이미 할당 된 변수의 외부에 이미 할당되어있는 경우 발생합니다. 그러나 이것이 내 기능에 해당하지 않기 때문에 파이썬이 왜 불평하는지 이해할 수 없다.

+1

R을 무언가로 초기화해야합니다. 처음에 x> N * y가 지정되지 않으면 할당되지 않습니다. –

답변

2

Rwhile 루프 내에 정의됩니다. 처음에 while 루프의 조건이 참이 아니라면 본문이 실행되지 않고 R이 정의되지 않습니다. 그런 다음 return R을 시도하면 오류가 발생합니다.

문제를 해결하려면 R을 루프에 들어가기 전에 초기화하십시오.

루프에 진입 여부를 에러 상태 인 경우에는, 호출자와 같은 (문제가 다음 try/except 구조를 사용 UnboundLocalError을 잡을 시작과 더 적절한 예외를 발생하는 원인 값을 전달하지 않아야 즉 ValueError).

관련 문제