#!/usr/bin/python
import datetime
def months(str1,str2):
year1=datetime.datetime.strptime(str1,"%Y%m%d").year
year2=datetime.datetime.strptime(str2,"%Y%m%d").year
month1=datetime.datetime.strptime(str1,"%Y%m%d").month
month2=datetime.datetime.strptime(str2,"%Y%m%d").month
num=(year1-year2)*12+(month1-month2)
return num + 1
def calculate(mon_id, base_load, mon_rate, avg_rate, mon_id_rate):
mon_pay_amt_all = base_load * (mon_rate* avg_rate )/(avg_rate -1) #每月还款额
mon_pay_amt_fee = base_load * mon_rate*(avg_rate - mon_id_rate) / (avg_rate -1)
mon_pay_amt_base = base_load * mon_rate* mon_id_rate / (avg_rate -1)
fee_all = 360 * mon_pay_amt_all - base_load
return mon_pay_amt_all, mon_pay_amt_fee, mon_pay_amt_base, fee_all
'''
每月还款额=贷款本金×[月利率×(1+月利率)^还款月数]÷[(1+月利率)^还款月数-1]
总支付利息:总利息=还款月数×每月月供额-贷款本金
每月应还利息=贷款本金×月利率×〔(1+月利率)^还款月数-(1+月利率)^(还款月序号-1)〕÷〔(1+月利率)^还款月数-1〕
每月应还本金=贷款本金×月利率×(1+月利率)^(还款月序号-1)÷〔(1+月利率)^还款月数-1〕
总利息=还款月数×每月月供额-贷款本金
'''
begin_mon = '20210501'
calculate_mon = '20250501'
mon_id = months(calculate_mon, begin_mon)
#本金
base_load = 186 - 5.024
#基准利率
base_rate = 0.0524
#利率倍数
multi = 1
#月利率
mon_rate = base_rate * multi / 12
#需还款月数
mon = 337
avg_rate = (1+ mon_rate)**mon
mon_id_rate = (1+ mon_rate)**(mon_id - 1)
sum_pay_amt_all = 0
sum_pay_amt_fee = 0
sum_pay_amt_base = 0
print('月利率 : ' + str(mon_rate))
for i in range(mon_id):
mon_id_rate = (1 + mon_rate)**((i + 1) - 1)
mon_pay_amt_all, mon_pay_amt_fee, mon_pay_amt_base, fee_all = calculate(mon_id, base_load, mon_rate, avg_rate, mon_id_rate)
sum_pay_amt_all = sum_pay_amt_all + mon_pay_amt_all
sum_pay_amt_fee = sum_pay_amt_fee + mon_pay_amt_fee
sum_pay_amt_base = sum_pay_amt_base + mon_pay_amt_base
print('-------------第%d月记录-----------------'%(i + 1))
print('每月还款额 : ' + str(mon_pay_amt_all))
print('每月应还利息 : ' + str(mon_pay_amt_fee))
print('每月应还本金 : ' + str(mon_pay_amt_base))
print()
print('-------------汇总-----------------')
print('总还款额 : ' + str(sum_pay_amt_all))
print('总还利息 : ' + str(sum_pay_amt_fee))
print('总还本金 : ' + str(sum_pay_amt_base))
print('总应还利息 : ' + str(fee_all))