0

The code below, albeit somewhat messy, asks the user to input their: years until retirement, interest rate, initial amount, and amount added each year. That part works fine. What I am trying to do now is calculate the value every five years based on the user's input. Basically I want it to look something like this:

The value of your account after 5 years will be $...
The value of your account after 10 years will be $...
The value of your account after 15 years will be $...
etc... all the way up until the number of years_left is met

The code I have now does mostly that except I think I either have a math error or a coding error (or both) that I can't seem to figure out. Any help would be greatly appreciated. My code is below:

def main():

    # Number of years left until retirement
    while True:
        try:
            years_left = int(input("Please enter the number of years left until retirement (1-70): "))
        except ValueError:
            print ("Entered value is not a number! Please enter a number 1-70.")
        except KeyboardInterrupt:
            print("Command Error! Please enter a number 1-70.")
        else:
            if 1 <= years_left < 70:
                break
            else:
                print("Entered value is not in the range 1-70.")

    # Interest rate (confirmation needed if greater than 10)
    while True:
        try:
            interest_rate = int(input("Please enter an interest rate: "))
            if interest_rate > 10:
                confirm = input("Entered interest rate is greater than 10%. Are you sure? (y/n): ")
                if confirm =="y":
                    break
            elif 0 <= interest_rate < 10:
                break
        except ValueError:
            print("Entered value is not a number! ") 

    # Initial amount to the IRA
    while True:
        try:
            initial_amount = int(input("Please enter the initial amount to the IRA: "))
        except ValueError:
            print ("Entered value is not a number! Please enter a number.")
        except KeyboardInterrupt:
            print("Command Error! Please enter a number.")
        else:
            if 0 < initial_amount:
                break
            else:
                print("Entered value is a negative number. Please enter a positive number.")

    # Amount added to the IRA each year
    while True:
        try:
            amount_added = int(input("Please enter the amount added to the IRA each year: "))
        except ValueError:
            print ("Entered value is not a number! Please enter a number.")
        except KeyboardInterrupt:
            print("Command Error! Please enter a number.")
        else:
            if 0 <= amount_added <= 2500:
                break
            else:
                print("Entered amount is not in the range $0 - $2,500.")

    #value = initial_amount + (initial_amount)*interest_rate + amount_added

    value = 0
    for x in range(5, years_left + 5):
        value = initial_amount + (initial_amount) * interest_rate + amount_added
        print("The value of your account after " + str(x) + " years will be $" + str(value))

main()

My current program outputs something like this:

Please enter the number of years left until retirement (1-70): 10
Please enter an interest rate: 7
Please enter the initial amount to the IRA: 1
Please enter the amount added to the IRA each year: 2000
The value of your account after 5 years will be $2008
The value of your account after 6 years will be $2008
The value of your account after 7 years will be $2008
The value of your account after 8 years will be $2008
The value of your account after 9 years will be $2008
The value of your account after 10 years will be $2008
The value of your account after 11 years will be $2008
The value of your account after 12 years will be $2008
The value of your account after 13 years will be $2008
The value of your account after 14 years will be $2008
Ben
  • 95
  • 1
  • 4
  • 16

1 Answers1

1

change this to :

value = 0
for x in range(5, years_left+5):
    value = initial_amount + (initial_amount) * interest_rate + amount_added
    print("The value of your account after " + str(x) + " years will be $" + str(value))

this:

count=5
value = 0
for x in range(5, years_left):
    value = value + initial_amount + (initial_amount) * interest_rate + amount_added
    print("The value of your account after " + str(count) + " years will be $" + str(value))
    count += 5
    if count > year_left+5:
       break

In your case you taken range(5,year_left+5), it will generarate a lit of number from 5 to year_left+5, so it will be like [5,6,7,8,9.....year_left+5], it not going to increment by 5.

more pythonic will be:

for x in range(5, years_left + 5,5):
    value = value + initial_amount + (initial_amount) * interest_rate + amount_added
    print("The value of your account after " + str(x) + " years will be $" + str(value))

it will go by 5 increment

Hackaholic
  • 19,069
  • 5
  • 54
  • 72
  • That would solve my counting issue, but it's still giving incorrect values each time. – Ben Nov 07 '14 at 01:52
  • now check you need to do for value too `value = value + your_stufff` – Hackaholic Nov 07 '14 at 01:53
  • @Ben Hope this solves your problem and you get the concept to – Hackaholic Nov 07 '14 at 01:57
  • This helps a lot, thank you very much. The only thing I'm having trouble with now is getting it to stop when the "years_left" value is met. For instance, if 25 is entered for years_left, the final output would give 5, 10, 15, 20, 25, and then stop. – Ben Nov 07 '14 at 02:02