2016-08-31 13 views
0

これは、その年の利息を計算する前に、年初の拠出金(元本総額)を追加する必要があります。将来の値の変更

私は立ち往生して助けが必要です。これは私がこれまで持っているものです。

def main(): 

    print("Future Value Program - Version 2") 
    print() 
    principal = eval(input("Enter Initial Principal:")) 
    contribution = eval(input("Enter Annual Contribution:")) 
    apr = eval(input("Enter Annual Percentage Rate (decimal):")) 
    yrs = eval(input("Enter Number of Years:")) 
    for k in range (1, yrs): 
     principal= principal * (1 + apr) 
    print() 
    print(yrs,) ": Amount $", int(principal * 100 + 0.5)/100) 

main() 

このように見えることになっている:

Future Value Program - Version 2 

Enter Initial Principal: 1000.00 
Enter Annual Contribution: 100.00 
Enter Annual Percentage Rate (decimal): 0.034 
Enter Number of Years: 5 

Year 1: Amount $ 1137.4 
Year 2: Amount $ 1279.47 
Year 3: Amount $ 1426.37 
Year 4: Amount $ 1578.27 
Year 5: Amount $ 1735.33 

The value in 5 years is $ 1735.33 
+2

実際には何が生成されますか? –

+2

入力にevalを使用せず、floatにキャストします。 –

+1

あなたのprintステートメントがあなたのforループの中にあるように思えます。 – perfect5th

答えて

0

ここで期待される出力を生成作業例です:

def main(): 
    print("Future Value Program - Version 2") 
    print() 
    principal = float(input("Enter Initial Principal: ")) 
    contribution = float(input("Enter Annual Contribution: ")) 
    apr = float(input("Enter Annual Percentage Rate (decimal): ")) 
    yrs = int(input("Enter Number of Years: ")) 
    print() 
    for yr in range(1, yrs + 1): 
     principal += contribution 
     principal = int(((principal * (1 + apr)) * 100) + 0.5)/100 
     print("Year {0}: Amount $ {1}".format(yr, principal)) 
    print() 
    print("The value in {0} years is $ {1}".format(yrs, principal)) 

if __name__ == '__main__': 
    main() 

ありましたこの例の問題はほとんどありません。

  1. 12行目のprint文に構文エラーがあります。printにparensを指定すると、すべての引数をparens内に囲む必要があります。 Pythonは、誤ったparenをprintに渡された引数の終わりとして解釈しました。
  2. 他の人に記載されているように、入力にevalを呼び出すべきではありません。浮動小数点数の場合はfloat、整数の場合はintを呼び出します。
  3. rangeオペレータは、1つずつエラーがありました。
  4. 他の人に触れたように、printはループの外側と呼ばれるため、プリンシパルの中間状態は出力されません。
  5. 基本的な数学的なところでは、寄与分を加えたものは除外されているようです。
  6. 期待された出力に従って、最後のprintがありませんでした。