2016-08-31 1 views
0

Dazu müssen Sie den jährlichen Beitrag zu Beginn des Jahres (der wichtigsten Summe) vor Berechnung der Zinsen für das Jahr hinzufügen.Änderung des zukünftigen Werts

Ich bin fest und brauche Hilfe. Das ist, was ich habe, so weit:

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() 

Es soll wie folgt aussehen:

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

und was produziert es eigentlich? –

+2

Verwenden Sie eval nicht für Eingaben, sondern für Float. –

+1

Es sieht so aus, als ob Ihre print-Anweisung innerhalb Ihrer for-Schleife liegen soll. – perfect5th

Antwort

0

Hier ist ein funktionierendes Beispiel, die die erwartete Ausgabe erzeugt:

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() 

Es gab ein einige Probleme mit dem Beispiel in der Frage:

  1. Ein Syntaxfehler in der print-Anweisung in Zeile 12. Das Aufrufen von print mit Parens bedeutet, dass alle Argumente in den Parens eingeschlossen sein müssen. Python interpretierte den fehlerhaften Paren als das Ende der Argumente, die an print übergeben wurden.
  2. Wie von anderen erwähnt, sollten Sie nicht eval an den Eingängen aufrufen. Rufen Sie float für Fließkommazahlen, int für Ganzzahlen.
  3. Der Operator range hatte einen Fehler bei einem Fehler.
  4. Wie von anderen erwähnt, wird print außerhalb der Schleife aufgerufen, so dass Zwischenzustände des Prinzipals nicht ausgegeben werden.
  5. Soweit grundlegende Mathematik, scheint es, als ob das Hinzufügen der Beitrag wurde weggelassen.
  6. Wie die erwartete Ausgabe fehlte die endgültige print.
Verwandte Themen