Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

I can't figure out why nothing is printing when I run my Python code. Can somebody point out what I'm doing incorrectly? Thank you!! #

I can't figure out why nothing is printing when I run my Python code. Can somebody point out what I'm doing incorrectly? Thank you!!

# Assumes: loan and r are floats, and m is an int # Returns the monthly payment for a mortgage of size # loan at a monthly rate of r for m months def findPayment(loan, r, m): return loan*((r*(1 + r)**m)/((1 + r)**m - 1))

# Abstract class for building different kinds of mortgages class Mortgage(object): # Assumes: loan and annRate are floats, and months is an int # Creates a new mortgage of size loan, duration months, # and annualrate annRate def __init__(self, loan, annRate, months): self.loan = loan self.rate = annRate/12 self.months = months self.paid = [0.0] self.outstanding = [loan] self.payment = findPayment(loan, self.rate, months) self.legend = None # description of mortgage def makePayment(self): # Make a payment self.paid.append(self.payment) reduction = self.payment - (self.outstanding[-1] * self.rate) self.outstanding.append(self.outstanding[-1] - reduction) def getTotalPaid(self): #return the total amount paid so far return sum(self.paid) def __str__(self): return self.legend

class Fixed(Mortgage): def __init__(self, loan, r, months): Mortgage.__init__(self, loan, r, months) self.legend = 'Fixed, ' + str(round(r*100, 2)) + '%' class FixedWithPts(Mortgage): def __init__(self, loan, r, months, pts): self.pts = pts self.paid = [loan*(pts/100)] self.legend = 'Fixed, ' + str(round(r*100, 2)) + '%, ' + str(pts)\ + ' points' class TwoRate(Mortgage): def __init__(self, loan, r, months, teaserRate, teaserMonths): Mortgage.__init__(self, loan, teaserRate, months) self.teaserMonths = teaserMonths self.teaserRate = teaserRate self.nextRate = r/12 self.legend = str(teaserRate*100)\ + '% for ' + str(self.teaserMonths)\ + ' months, then ' + str(round(r*100, 2)) + '%' def makePayment(self): if len(self.paid) == self.teaserMonths + 1: self.rate = self.nextRate self.payment = findPayment(self.outstanding[-9], self.rate, self.months - self.teaserMonths) Mortgage.makePayment(self) def compareMortgages(amt=200000, years=30, fixedRate=0.07, pts=3.25, ptsRate=0.05, varRate1=0.045, varRate2=0.095, varMonths=48): totMonths = years*12 fixed1 = Fixed(amt, fixedRate, totMonths) fixed2 = FixedWithPts(amt, ptsRate, totMonths, pts) twoRate = TwoRate(amt, varRate2, totMonths, varRate1, varMonths) morts = [fixed1, fixed2, twoRate] for m in range(totMonths): for mort in morts: mort.makePayment() for m in morts: print(m) print(' Total Payments = $' + str(int(m.getTotalPaid())))

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Processing Fundamentals, Design, and Implementation

Authors: David M. Kroenke, David J. Auer

14th edition

133876705, 9781292107639, 1292107634, 978-0133876703

More Books

Students also viewed these Databases questions

Question

What is the difference between Needs and GAP Analyses?

Answered: 1 week ago

Question

What are ERP suites? Are HCMSs part of ERPs?

Answered: 1 week ago