房贷计算器

#!/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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值