2013-12-19 62 views
0

我正在編寫一個測試,每年返回利息總額。如何在我的Investor類中添加感興趣的值,因爲它在數組interest = []中的每個步驟中都會複合?出於某種原因,這很難包圍我的頭。使用Python進行復利

代碼:

class Test(unittest.TestCase): 

'''Represents my test case(s) for the dojo.''' 

def setUp(self): 
    '''Defines the initial state of an investor.''' 
    self.investor = Investor(10000, 7.2, 5) 

def test_solve_for_interest(self): 
    self.assertEqual(self.investor.get_interest(), 720.0) 

def test_get_interest_by_year(self): 
    '''Returns a value of interest associated by the year.''' 
    self.assertEqual(self.investor.interest_by_year(1), 10720.0) 


class Investor(object): 

    def __init__(self, amount, rate, time): 
     self.amount = amount 
     self.rate = rate 
     self.time = time 

    def get_interest(self): 
     return (self.amount * self.rate)/100.0 

    def interest_by_year(self, year): 
     interest = [] 
     for i in xrange(1, (self.time+1)): 
      # collect compounding interest each year 
     return interest[year] 

預期結果:

year 1 = 10,720.00 (interest[1]) 

year 2 = 11491.84 (interest[2]) 

year 3 = 12319.25 (interest[3]) 

year 4 = 13206.24 (interest[4]) 

year 5 = 14157.09 (interest[5]) 

回答

0
def interest_by_year(self, year): 
    interest = [self.amount] 
    for i in xrange(self.time): 
     interest.append(interest[i]*self.rate) 
    return interest[year] 

測試:

ivt = Investor(10000, 1.072, 10) 
for i in range(1, 6): 
    print "year", i, "=", ivt.interest_by_year(i) 

輸出:

year 1 = 10720.0 
year 2 = 11491.84 
year 3 = 12319.25248 
year 4 = 13206.2386586 
year 5 = 14157.087842  
+0

嗯,我發現了一個不同'''AssertionError:72000.0!= 10720.0'''的錯誤 – theGrayFox

+0

爲了讓我的代碼計算第一年的利息爲72000.0?你輸入了正確的價格嗎? – Skyler

+0

對於test_get_interest_by_yearself.assertEqual(self.investor.interest_by_year(1),10720.0) – theGrayFox

1

這可能與大熊貓更優雅的解決:

years = range(1,6) 
rate = 0.072 
rates = pandas.Series(index = years, data = rate) 

注意,房價可能會多年來

initialValue*((rates + 1).cumprod())