level: beginner exercise source: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/assignments/pset4.pdf
Problem 4 Can my code be optimised? I think my approach is correct but i am hesitant about the initial max value. def nestEgVariable(salary, save, preRetireGrowthRates): SavingsRecord = [] fund = 0 depositPerYear = salary * save * 0.01 for i in preRetireGrowthRates: fund = fund * (1 + 0.01 * i) + depositPerYear SavingsRecord += [fund,] startingPot = SavingsRecord[-1] return startingPot def expenseCalculator(postRetireGrowthRates,fundsize,epsilon,yearsOfretirement ): low = 0 high = fundsize guess = (low + high) /2 while abs(guess * yearsOfretirement - fundsize) > epsilon: if guess * yearsOfretirement > fundsize : high = guess else: low = guess guess = (low + high) /2 return guess def findMaxExpenses(salary,save,preRetireGrowthRates, postRetireGrowthRates,epsilon): yearsOfretirement = len(postRetireGrowthRates) fundsize = nestEgVariable(salary, save, preRetireGrowthRates) for growthRate in postRetireGrowthRates: expenses = expenseCalculator(postRetireGrowthRates, fundsize ,epsilon,yearsOfretirement ) fundsize = (fundsize * (1 + 0.01 * growthRate)) - expenses print 'fundsize', fundsize print 'expenses', expenses yearsOfretirement -=1 return fundsize findMaxExpenses(10000,10,[3, 4, 5, 0, 3],[10, 5, 0, 5, 1],0.01) thanks Baba -- http://mail.python.org/mailman/listinfo/python-list