2017-10-02 19 views
-1

このスクリプトの目的は、開始金額と年間利率を考慮して目標金額に達するまでの年数を指定することです。UnboundLocalError:割り当て前にローカル変数 'c​​urrentamt'が参照されています

私はエラーを取得する:UnboundLocalError:あなたはそれを引数として渡す場合を除き代入する前に、参照ローカル変数「currentamt」

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:割り当て前にローカル変数 'c​​urrentamt'が参照されました –

+0

こんにちは、ようこそ。エラーが発生したときに完全な例外トレースをコピー・ペーストすることをお勧めしますか?それ以外の場合は、私たちがあなたを助けるのに役立つ有益な情報を省略しています。 – spectras

+2

割り当て前に参照されている[ローカル変数(?)の可能な複製](https://stackoverflow.com/questions/11904981/local-variable-referenced-before-assignment) – bhansa

答えて

0

はあなたの主な機能はcurrentamtが何であるかを知りません。ループはcurrentamtを変更しないので、無限にループします。最後に文字列である '年'を印刷します。あなたのループがうまく動くならば、最終的にコンソールに「年」と表示されます。代わりに、年を含む変数である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) 
関連する問題