2016-07-08 4 views
1

Ich habe ein Programm (futval.py), das den Wert einer Investition nach 10 Jahren berechnet. Ich möchte das Programm so ändern, dass es nach 10 Jahren nicht den Wert einer einmaligen Investition berechnet, sondern den Wert einer jährlichen Investition nach 10 Jahren. Ich möchte dies tun, ohne eine Akkumulatorvariable zu verwenden. Ist es möglich, dies nur mit den Variablen zu tun, die im ursprünglichen Programm vorhanden waren (Investition, apr, i)?Python - akkumulierter Wert der jährlichen Investition

# futval.py 
# A program to compute the value of an investment 
# carried 10 years into the future 

def main(): 
    print "This program calculates the future value", 
    print "of a 10-year investment." 

    investment = input("Enter the initial investment: ") 
    apr = input("Enter the annual interest rate: ") 

    for i in range(10): 
     investment = investment * (1 + apr) 

    print "The value in 10 years is:", investment 

main() 

Ich konnte das Programm nicht ändern, ohne die Akkumulatorvariable 'futval' einzuführen.

# futval10.py 
# A program to compute the value of an annual investment 
# carried 10 years into the future 

def main(): 
    print "This program calculates the future value", 
    print "of a 10-year annual investment." 

    investment = input("Enter the annual investment: ") 
    apr = input("Enter the annual interest rate: ") 

    futval = 0 

    for i in range(10): 
     futval = (futval + investment) * (1+apr) 

    print "The value in 10 years is:", futval 

main() 
+0

Warum willst du tun, um diesen – Natecat

+0

Es ist ein Problem in einem Python-Lehrbuch. Angeblich ist es möglich, eine Akkumulatorvariable einzuführen, aber ich kann nicht herausfinden, wie. – TexanBruceWayne

+0

Ich bin mir ziemlich sicher, es wäre futval = (Investition * 10) ((1 + apr) ** 10) – Natecat

Antwort

1

Okay, wenn Sie etwas Mathe versuchen, werden Sie die Lösung selbst sehen. Für das erste Jahr haben wir:

new_value = investment*(1 + apr) 

Zum zweiten:

new_second_value = (new_value + investment)*(1+apr) 

oder

new_second_value = (investment*(1 + apr) + investment)*(1+apr) 

Et cetera. Wenn Sie tatsächlich versuchen, diese Sachen multiplizieren, erhalten Sie

der Endwert nach 10 Jahren ist
investment*((1+apr)**10) + investment*((1+apr)**9)+... etc 

sehen, dass so die Lösung für Ihr Problem ist nur

print("The value in 10 years is:", sum([investment*((1+apr)**i) for i in range(1, 11)])) 

EDIT: Irgendwie ich geschafft mit Blick auf die Tatsache, dass das, was ich gerade geschrieben habe eine geometrische Reihe ist, so ist die Antwort noch einfacher:

ten_years_annual_investment = investment*(apr+1)*((apr+1)**10 - 1)/apr 
0

Nun, brauchen Sie nicht einen Akkumulator, aber Sie müssen noch eine temporäre Variable, um den ursprünglichen Wert der periodischen Investition zu halten: Ich verwende

def main(): 
    print "This program calculates the future value", 
    print "of a 10-year investment." 

    investment = input("Enter the initial investment: ") 
    apr = input("Enter the annual interest rate: ") 

    hold = investment 
    investment = investment/apr 

    for i in range(10): 
     investment = investment * (1 + apr) 

    investment = investment - hold/apr 

    print "The value in 10 years is:", investment 

main() 
+0

Also fragt der Typ "Ist es möglich, dies nur mit den Variablen zu tun, die im ursprünglichen Programm vorhanden waren (Investition, apr, i)?" und deine Antwort ist "Add a additional variable"? Das ist ... fett. –