我的还款计算器中的数学运算出现错误。我正在尝试创建一个类,在该类中可以创建贷款,按月或按年进行迭代,还可以对贷款进行付款。我不确定我的问题在此代码中的什么地方。
我尝试过更改付款方式,并且陷入了数学的根本问题。我认为我的应计利息和本金平衡方式存在潜在的问题
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
我希望以5%利率计算的10000美元贷款的输出为10500,然后为11025,应计利息为1025,而不是分别得到11000和1000。
答案 0 :(得分: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