2016-03-07 60 views
-2
def balance (p, apr, mo): 
mpr = 0.01*apr/12 
for month in range(int(mo)): 
    p= p+p*mpr 
    return p 

我是一個初學者,試圖創建一個函數,將返回月結束後的信用卡餘額p和利率。當我運行我的代碼時,看起來循環不起作用。如何查找有關我的代碼的信用卡餘額?

+0

您應該取消縮進從for循環 –

回答

1
def balance (p, apr, mo): 
    mpr = 0.01*apr/12.0 
    for month in range(int(mo)): 
     p= p+p*mpr 
    return p 


for i in range(1,13): 
    print balance(1000,10,i) 

嚴格來說這個mpr是不正確的(月度複合是一種簡化,在幻燈片規則之前是合理的);月率應該是年率的第12根;看到連續複利https://en.wikipedia.org/wiki/Compound_interest

def balance2 (p, apr, mo): 
    mpr = ((1+apr/100.0)**(1/12.0)-1) 
    for month in range(int(mo)): 
     p= p+p*mpr 
    return p 

print 
for i in range(1,13): 
    print balance2(1000,10,i) 

輸出:

1008.33333333 
1016.73611111 
1025.20891204 
1033.75231964 
1042.3669223 
1051.05331332 
1059.81209093 
1068.64385836 
1077.54922384 
1086.52880071 
1095.58320738 
1104.71306744 

1007.97414043 
1016.01186777 
1024.11368908 
1032.28011546 
1040.51166206 
1048.80884817 
1057.17219721 
1065.60223677 
1074.09949864 
1082.66451888 
1091.29783779 
1100.0 
+0

你爲什麼要導入numpy的return語句? – Gerrat

+0

謝謝,我的第一個版本使用日誌來取第12個根。去掉了Numpy。 – roadrunner66