1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 贷款等额本金与等额本息还款计算器python3实现

贷款等额本金与等额本息还款计算器python3实现

时间:2019-04-24 18:28:18

相关推荐

贷款等额本金与等额本息还款计算器python3实现

贷款等额本金与等额本息还款计算器python3实现

等额本息还款计算逻辑等额本金还款计算逻辑python3计算等额本息与等额本金还款计划调用例子

等额本息还款计算逻辑

1、等额本息还款法每期应还额(月供)相等,计算公式为:

P=i∗(1+i)n(1+i)n−1∗CP = \frac{i*(1+i)^n}{(1+i)^n-1}*CP=(1+i)n−1i∗(1+i)n​∗C

P:每期应还额

i:月利率 = 年利率 / 12

n:期数

C:本金

2、计算出每期应还额后再计算每期应还利息和应还本金:

每期应还利息 = 剩余本金余额 * 月利率

每期应还本金 = 每期应还额 - 每期应还利息

等额本金还款计算逻辑

1、计算等额本金每期应还本金:

每期应还本金 = 本金 / 期数

2、计算每期应还利息和每期应还额

每期应还利息 = 剩余本金余额 * 月利率

每期应还额 = 每期应还本金 + 每期应还利息

python3计算等额本息与等额本金还款计划

import pandas as pdclass financeCalculator():def __init__(self,Corpus,numOfPeriod,Interest):'''3个入参:本金 / 期数 / 利率(年利率)'''self.Corpus = Corpusself.numOfPeriod = numOfPeriodself.Interest = Interestdef calPayPerPeriod(self):'''等额本息计算每期还款额的公式'''r = self.Interest / 12 / 100return r * (1+r)**self.numOfPeriod * self.Corpus / ((1+r)**self.numOfPeriod - 1)def averageCorpusPlusInterest(self):'''计算等额本息还款计划表'''interestList,paidCorpus,unpaidCorpus = [],[],[]r = self.Interest / 12 / 100for i in range(self.numOfPeriod):balance = self.Corpus - sum(paidCorpus)payInte = balance * rinterestList.append(payInte)payPerPeriod = self.calPayPerPeriod()paidCorpus.append(payPerPeriod - payInte)unpaidCorpus.append(balance)unpaidCorpus = unpaidCorpus[1:] + [0]df = pd.DataFrame({'期数':list(range(1,self.numOfPeriod+1)),'月供':[payPerPeriod]*self.numOfPeriod,'月供本金':paidCorpus,'月供利息':interestList,'本金余额':unpaidCorpus})df = df.set_index('期数').round(2).reset_index()summary = ['总计',round(df['月供'].sum(),2),round(df['月供本金'].sum()),round(df['月供利息'].sum(),2),'--']df = df.append(pd.Series(summary,index=df.columns),ignore_index=True)return dfdef averageCorpus(self): '''计算等额本金还款计划表'''paidCorpus,unpaidCorpus,interestList,payPerPeriod = [],[],[],[]r = self.Interest / 12 / 100for i in range(self.numOfPeriod):balance = self.Corpus - sum(paidCorpus)payInte = balance * runpaidCorpus.append(balance)paidCorpus.append(self.Corpus / self.numOfPeriod)interestList.append(payInte)payPerPeriod.append(self.Corpus / self.numOfPeriod + payInte)unpaidCorpus = unpaidCorpus[1:] + [0]df = pd.DataFrame({'期数':list(range(1,self.numOfPeriod+1)),'月供':payPerPeriod,'月供本金':paidCorpus,'月供利息':interestList,'本金余额':unpaidCorpus})df = df.set_index('期数').round(2).reset_index()summary = ['总计',round(df['月供'].sum(),2),round(df['月供本金'].sum()),round(df['月供利息'].sum(),2),'--']df = df.append(pd.Series(summary,index=df.columns),ignore_index=True)return df

调用例子

fc = financeCalculator(6000,3,24)fc.averageCorpusPlusInterest()

fc.averageCorpus()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。