Python Lesson
Write a function, called postRetirement, which takes three arguments: an initial amount
of money in your retirement fund (savings), a list of annual growth percentages on
investments while you are retired (growthRates), and your annual expenses (expenses).
Assume that the increase in the investment account savings is calculated before
subtracting the annual expenditures (as shown in the above table). Your function should
return a list of fund sizes after each year of retirement, accounting for annual expenses
and the growth of the retirement fund. Like problem 2, the length of the growthRates
argument defines the number of years you plan to be retired.
Note that if the retirement fund balance becomes negative, expenditures should continue
to be subtracted, and the growth rate comes to represent the interest rate on the debt
(i.e. the formulas in the above table still apply).
Here is my end function:
def postRetirement(savings,growthRates,expenses): remainingSavings = [savings,] for growthRate in growthRates: remainingvalue = remainingSavings[-1]*(1 + 0.01 * growthRate) - expenses remainingSavings.append(remainingvalue) return remainingSavings[1:] |
As you can see, as like the two previous functions, I begin with defining a new list ‘remainingSavings’, with my savings as the first entry. Then I use a ‘for’ loop to process the ‘growthRates’ list I was provided. First step in the ‘for’ loop, assess the ‘remainingvalue’ for the next year. This is done by taking the last entry from the ‘remainingSavings’ list (which is denoted by the slice of [-1] previous the list name), and multiplying it by the total growth then subtracting the estimated expenses for each year. The final part is to append each ‘remainingvalue’ to the ‘remainingSavings’ list, and then going through the loop again. After the loop is finished it then returns a slice of that list (all of it excepting the first position), and it’s done. Here are the variables and the subsequent result from my function.
Variables: print postRetirement(100000,[10,5,0,5,1],30000) Results: [80000.000000000015, 54000.000000000015, 24000.000000000015, # -4799.9999999999854, -34847.999999999985] |