2017-10-02 1 views
-1

이 스크립트의 목적은 시작 금액과 연간 이자율이 주어지면 목표 금액에 도달하는 데 걸리는 시간을 제공하는 것입니다.UnboundLocalError : 할당 전에 로컬 변수 'currentamt'가 참조되었습니다.

나는 오류를 얻을 : UnboundLocalError : 할당

startamt = float(input("Starting Amount?: ")) 

targetamt = float(input("Target Amount?: ")) 

air = float(input("Annual Interest Rate? ")) 

currentamt = 0 

year = 0 

def main(): 

    currentamt = startamt * air + currentamt 

    while currentamt < targetamt: 

     year = year + 1 

print('year') 

if __name__ == '__main__': 

    main() 
+0

이 스크립트의 목적은 시작 금액과 연간 이자율이 주어지면 목표 금액에 도달하는 데 걸리는 시간을 제공하는 것입니다. 오류가 발생했습니다 : UnboundLocalError : 할당 전에 로컬 변수 'currentamt'가 참조되었습니다. –

+0

안녕하세요. 오류가 발생하면 전체 예외 추적을 복사하여 붙여 넣으시겠습니까? 그렇지 않으면 도움을 줄 수있는 유용한 정보가 누락됩니다. – spectras

+2

할당 전에 참조 된 [로컬 (?) 변수의 복제본] (https://stackoverflow.com/questions/11904981/local-variable-referenced-before-assignment) – bhansa

답변

0

귀하의 주요 기능은 인수로에 통과하지 않는 한 어떤 currentamt 모르는 전에 참조 된 지역 변수 'currentamt'. 루프는 currentamt를 수정하지 않으므로 무한 루프가됩니다. 결국 문자열 인 'year'를 출력합니다. 루프가 작동한다면 결국 콘솔에 'year'가 인쇄됩니다. 대신 연도를 포함하는 변수 인 year을 인쇄하려고합니다. 아래의 솔루션을 참조하십시오.

def main(currentamt): 
    year = 0 
    startamt = float(input("Starting Amount?: ")) 
    targetamt = float(input("Target Amount?: ")) 
    air = float(input("Annual Interest Rate? ")) 

    while currentamt < targetamt: 
     currentamt = startamt * air + currentamt 
     year = year + 1 
    print(year) 

if __name__ == '__main__': 
    currentamt = 0 
    main(currentamt) 
관련 문제