按揭贷款——定义抽象类
def findPayment(loan, r, m):
up = r*(1+r)**m
dn = (1+r)**m-1
return loan*(up/dn)
class Mortgage(object):
def __init__(self, loan, annRate, months):
self.loan = loan
self.annRate = annRate
self.months = months
self.rate = self.annRate/12/100
self.paid = [0.0]
self.owed = [loan]
self.payment = findPayment(loan,self.rate,months)
self.legend = None
def makePayment(self):
self.paid.append(self.payment)
reduction = self.payment - self.owed[-1] * self.rate
self.owed.append(self.owed[-1] - reduction)
def getTotalPaid(self):
return sum(self.paid)
def __str__(self):
return 'The Mortgage is {self.legend}, Loan is {self.loan}, Months is {self.months}, Rate is {self.rate:.2f}, Monthly payment is {self.payment:.2f}'.format(self=self)
if __name__=="__main__":
print(Mortgage(100000, 6.5, 36))
print(Mortgage(100000, 6.5, 120))
三种贷款方式建模
def findPayment(loan, r, m):
return loan * ((r * (1 + r) ** m) / ((1 + r) ** m - 1)