0

我的贷款还款计算器中的数学出现错误。我正在尝试创建一个类,我可以在其中创建贷款,按月或年对其进行迭代,并将付款应用于贷款。我不完全确定我的问题出在这段代码中。

我尝试过更改付款方式,但我遇到了数学的根本问题。我认为我的利息累积方式和本金平衡存在根本问题

class loan():

    p_i = 0 #initial principle
    p_new = 0 #total balance
    rate = 0 #interest rate (in %)
    acc = 0 #total accrued interest

    def __init__(self,p,rate):

        self.p_i = p
        self.p_new = p
        self.rate = rate

    def month(self):

        if self.p_i == self.p_new:
            self.acc += self.p_i * (1 + (self.rate/100)/12)
            self.p_new = self.p_i + self.acc
        else:
            self.acc += self.p_i * (1 + (self.rate/100)/12)
            self.p_new = self.p_i + self.acc

    def year(self):

        if self.p_i == self.p_new:
            self.acc += self.p_i * (1 + (self.rate/100)) - self.p_i
            self.p_new = self.p_i + self.acc 
        else:
            temp = 0
            temp = self.p_i * (1 + (self.rate/100)) - self.p_i
            self.p_new += temp
            self.acc += temp

    def payment(self,amount):

        temp = 0
        if amount < self.acc:
            self.acc -= amount
        else:
            self.p_i -= amount - self.acc
            self.acc = 0
            self.p_new -= amount

我希望输出 10000 美元的贷款,利率为 5%,然后是 10500,然后是 11025,应计利息是 1025,而不是我分别得到 11000 和 1000。

4

1 回答 1

0

我建议您首先将其从课堂中拿出来,然后按程序进行,直到您完成数学运算为止。看来您正在与class语法作斗争。

所以只需尝试设置变量和一些函数,然后循环一些选项。

从这样的事情开始:

principal = 10000
rate = 0.05

def monthly_interest():
    global principal, rate
    principal += rate/12*principal

def make_payment(payment):
    global principal
    principal -= payment


for month in range(1,13):
    monthly_interest()
    # print totals
    print('month {:2d}, principal ${:0.2f}'.format(month, principal))

意识到这对于全局变量和所有变量来说有点难看,但是如果你无法让数学工作,请从这里开始,然后在你解决问题后构建一个类。

输出:

month  1, principal $10041.67
month  2, principal $10083.51
month  3, principal $10125.52
month  4, principal $10167.71
month  5, principal $10210.08
month  6, principal $10252.62
month  7, principal $10295.34
month  8, principal $10338.24
month  9, principal $10381.31
month 10, principal $10424.57
month 11, principal $10468.00
month 12, principal $10511.62
于 2019-05-29T04:32:02.360 回答