房屋贷款承受能力计算器

时间:2018-09-30 13:29:38

标签: python for-loop calculator

要求我创建一个函数:maximum_home_loan(PMT,i,n),该函数计算我的客户可以负担的最大房屋贷款,如果他们:

  • 有足够的能力在每年的年末支付PMT款项(从现在起一年内支付第一笔款项)
  • 每年以i%的利率计息,并且
  • 在n年内还清房屋。

这就是我的做法,但我认为这个数字并没有加起来。

def maximum_home_loan(PMT, i, n):
       For i in range(n):
           PMT = PMT*(1 + i)**n
           PV = PMT + i
           PV = PV + PMT
           PV = round(PV, 2)
           return float(PV)
print(maximum_home_loan(15000*12, 0.1045/100, 25))

输出:369523.89

输出实际上应该是:1578934.73

这是怎么回事?

1 个答案:

答案 0 :(得分:2)

我不确定我要在代码中做什么,所以这是另一个解决方案。

假设第一年末您的债务如下:

债务 1 =贷款*(1 + i)-PMT

第二年末它将是:

D 2 = D 1 *(1 + i)-PMT =贷款*(1 + i) 2 -PMT *( 1 +(1 + i))

第N年,我们得到:

D n =贷款*(1 + i) n -PMT * sum j = 0 n-1 (1 + i) j

因为D n 必须为零,所以您有一个css({top, left})的公式(我敢肯定,您可以大大简化总和,但我不记得如何参见下文):

Loan

您真的不需要使用def calculate(PMT, i, n): return PMT * sum((1+i)**j for j in range(n)) / (1+i)**n 计算总和,因为有一种用于此类总和的公式:

sum j = 0 n-1 r j =(r n -1)/(r -1)

所以,这是运行中的公式:

sum(...)