python 计算银行带宽等额本金和等额本息的方法

在房屋贷款中,还款是按月进行的,利息也是按月计算的(月利率为年利率除以12),每月还款优先还本月利息,剩下的还本金,未还款的本金会影响下月利息的计算,在还款期数达到时,所有贷款都会还完,还款选项中有等额本息和等额本金两种方式,等额本息每月的还款额是相同的,等额本金每月还款额中的本金的值是相同的,请编程计算两种还款方式的区别。两种贷款的算法计算公式

# coding=utf-8
# author:Darren
# email:loccui@126.com
#time:2020-07-02

import numpy as np
import math

# ********************第一种方法**********************
# 房贷等额本息算法
# 计算房贷等额本息法应还款的额度并输出结果
def averageCapitalPlusInterest(principal, anualInterestRate, month):
    # principal表示贷款总额,anualInterestRate表示年利率,month表示房贷月份
    monthlyPayment = np.around(principal * averageCapitalPlusInterestRate(month, monthlyInterestRate(anualInterestRate)),
                               2)  # 计算每月应还款金额
    totalPayment = np.around(monthlyPayment * month, 2)  # 还款总额
    print(monthlyPayment,"      ",monthlyPayment,"      ",totalPayment)
    return

# 计算每月利率
def monthlyInterestRate(anualInterestRate):
    s = anualInterestRate / 12
    return s

# 计算比例系数
def averageCapitalPlusInterestRate(month, monthlyInterestRate):
    R = monthlyInterestRate
    N = month
    I = R * math.pow(1 + R, N) / (math.pow(1 + R, N) - 1)
    return I

# 房贷等额本金算法
# 计算房贷等额本金法应还款的额度并输出结果
def averageCapital(principal, anualInterestRate, month):
    # principal表示房价总额,anualInterestRate表示房贷年利率,month表示房贷月份
    monthlyPayment = np.zeros(month)  # 初始化每月还款金额
    for i in range(0, month):
        monthlyPayment[i] = np.around((principal / month) + ((principal - i * (principal / month)) * monthlyInterestRate(anualInterestRate))
                                      , 2)    # 每月还款金额
    totalPayment = np.around(sum(monthlyPayment), 2)  # 计算还款总额
    print(monthlyPayment[1],"      ",monthlyPayment[2],"      ",totalPayment)
    return

# 示例
###########    主程序   ##############
if __name__ == "__main__":
    t = float(input("t:"))
    r= float(input("r:"))
    m = int(input("m:"))
    print(t,'   ',r,'   ',m)
    averageCapitalPlusInterest(t, r, m)
    averageCapital(t, r, m)


# ——————————————————第二种方法————————————————————————
# t = float(input("t:"))  #贷款金额
# r= float(input("r:"))  #年利率
# m = int(input("m:"))  # 贷款时间月
# print(t,'   ',r,'   ',m)
# s = r / 12  # 月利息
# #---------等额本息-----------------
# I = s * math.pow(1 + s, m) / (math.pow(1 + s, m) - 1)
# monthlyPayment1 = np.around(t * I,2)  # 计算每月应还款金额
# totalPayment1 = np.around(monthlyPayment1 * m, 2)  # 还款总额
# #--------- 等额本金-----------------
# monthlyPayment2 = np.zeros(m)  # 初始化每月还款金额
# for i in range(0, m):
#     monthlyPayment2[i] = np.around((t / m) + ((t - i * (t / m)) * s), 2)  # 每月还款金额
# totalPayment2 = np.around(sum(monthlyPayment2), 2)  # 计算还款总额
# print(monthlyPayment1,'        ', monthlyPayment1,'        ', totalPayment1)
# print(monthlyPayment2[1],'        ', monthlyPayment2[2],'        ', totalPayment2)
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值