实现和测试代码
# coding : utf-8
def GetHouseLoan(year_rate, total_year, total_amt):
"""
等额本息(月供固定)
year_rate : 贷款年利率
total_year : 贷款总年限,单位年
total_amt :贷款总金额,单位万元
返回一个元组(月供,还款总额,还款利息)
"""
rate = (year_rate / 100) / 12
base = total_amt * 10000
months = total_year * 12
# 每月还款额=贷款本金×[月利率×(1+月利率) ** 还款月数] / ([(1+月利率) ** 还款月数]-1)
month_pay = base * (rate * (1 + rate) ** months) / ((1 + rate) ** months - 1)
total_pay = months * month_pay
interest_pay = total_pay - base
print("贷款年限:{0:02},月供:{1:0<6.2f},利息占比:{2:.4f}".format(total_year, month_pay, 100.0 * interest_pay / total_pay))
return month_pay, total_pay, interest_pay
# 测试
for v in range(5, 35, 5):
GetHouseLoan(4.45, v, 200)
输出结果
贷款年限:05,月供:37240.58,利息占比:10.4919
贷款年限:10,月供:20679.51,利息占比:19.4049
贷款年限:15,月供:15248.81,利息占比:27.1346
贷款年限:20,月供:12599.07,利息占比:33.8576
贷款年限:25,月供:11059.97,利息占比:39.7225
贷款年限:30,月供:10074.38,利息占比:44.8546