logo Use CA10RAM to get 10%* Discount.
Order Nowlogo
(5/5)

For this homework, you will write a script to do some useful calculations for fixed-rate mortgages

INSTRUCTIONS TO CANDIDATES
ANSWER ALL QUESTIONS

Homework: Mortgage Calculator

Table of Contents

Instructions

get_min_payment()

interest_due()

remaining_payments()

main()

Running your program

Testing

Academic integrity

Instructions

For this homework, you will write a script to do some useful calculations for fixed-rate mortgages. Use the provided template (mortgage.py) and make sure your file is called mortgage.py (if you end up downloading the template more than once, take extra care that the file you submit is not named, for example, mortgage (1).py). At a minimum, your script should contain the functions get_min_payment(), interest_due(), remaining_payments(), and main(), each of which is described below. Be sure to include a docstring in each function.

 

get_min_payment()

Parameters

 

The total amount of the mortgage (called the principal; you can assume this is a positive number)

 

The annual interest rate (you can assume this is a float between 0 and 1; for example, an interest rate of 3.5% would be expressed as 0.035)

 

The term of the mortgage in years (you can assume this is a positive integer; assign this parameter a default value of 30)

 

The number of payments per year (you can assume this is a positive integer; assign this parameter a default value of 12)

 

Functionality

 

Compute the minimum mortgage payment A

 using the formula A=Pr(1+r)n(1+r)n−1

 where

 

P

 is the principal amount

 

r

 is the interest rate per payment (the annual interest rate divided by the number of payments per year)

 

n

 is the total number of payments (the term of the mortgage in years × the number of payments per year)

 

Use math.ceil() to raise the minimum payment you calculated in step 1 to the next highest integer; return this integer.

 

You will need to import math in order to do this. import statements belong at the top of your script, right after your script docstring.

 

NOTE

This function takes into account only principal and interest, which are typically the two largest components in a mortgage payment. In the real world, mortgage payments often also cover other expenses like property taxes, home insurance, and private mortgage insurance.

interest_due()

Parameters

 

The balance of the mortgage (the part of the principal that has not been paid back yet; you can assume this is a positive number)

 

The annual interest rate (you can assume this is a float between 0 and 1; for example, an interest rate of 3.5% would be expressed as 0.035)

 

The number of payments per year (you can assume this is a positive integer; assign this parameter a default value of 12)

 

Functionality

 

Compute and return i

, the amount of interest due in the next payment according to the formula i=br

, where

 

b

 is the the balance of the mortgage

 

r

 is the interest rate per payment (the annual interest rate divided by the number of payments per year)

 

remaining_payments()

Parameters

 

The balance of the mortgage (the part of the principal that has not been paid back yet; you can assume this is a positive number)

 

The annual interest rate (you can assume this is a float between 0 and 1; for example, an interest rate of 3.5% would be expressed as 0.035)

 

The target payment (the amount the user wants to pay per payment; you can assume this is a positive number)

 

The number of payments per year (you can assume this is a positive integer; assign this parameter a default value of 12)

 

Functionality

 

Compute and return the number of payments required to pay off the mortgage. We will do this by simulating payments one at a time until the balance of the mortgage reaches zero, assuming fixed payments (in other words, assume that each payment is the same amount of money as the previous one).

 

NOTE

A mortgage payment is broken down into two parts: an interest payment, and a part that pays down the balance of the mortgage. The interest payment is calculated as described under interest_due(); the rest of the payment goes toward the balance of the mortgage. The percentage of the payment that goes toward interest decreases with every payment because it depends on the balance of the mortgage, which also decreases with every payment.

Here is an algorithm for simulating payments until the mortgage is paid off:

 

Initialize a counter with a value of zero; this counter represents the number of payments to be made.

 

As long as the balance of the mortgage is positive, do the following:

 

Use the interest_due() function to determine what portion of the next payment will be interest. The total payment minus interest due is the amount that will go toward paying the balance of the principal. Remember, these amounts will change with every payment.

 

Reduce the balance by the part of the payment that goes toward paying the balance.

 

Increase the counter.

 

When the balance of the mortgage is no longer positive, the value of the counter is the number of payments required. Return this value.

 

main()

Parameters

 

The total amount of the mortgage (called the principal; you can assume this is a positive number)

 

The annual interest rate (you can assume this is a float between 0 and 1; for example, an interest rate of 3.5% would be expressed as 0.035)

 

The term of the mortgage in years (you can assume this is a positive integer; assign this parameter a default value of 30)

 

The number of payments per year (you can assume this is a positive integer; assign this parameter a default value of 12)

 

The user’s target payment (the amount the user wishes to pay per payment; you can assume this is a positive number or None; assign this parameter a default value of None)

 

A value of None indicates that the user wishes to use the minimum payment

 

Functionality

 

Compute the minimum payment using the get_min_payment() function

 

Display the minimum payment to the user

 

If the user’s target payment is None, set the target payment to the minimum payment

 

If the user’s target payment is less than the minimum payment, print a message to the user (e.g., "Your target payment is less than the minimum payment for this mortgage"); otherwise:

 

Use remaining_payments() to figure out the total number of payments required (hint: at the beginning of a mortgage, the balance is equal to the total mortgage amount)

 

Display this number to the user (e.g., "If you make payments of $< target payment >, you will pay off the mortgage in < total payments > payments."; replace the angle brackets with the appropriate values)

Running your program

Your program is designed to run from the terminal. To run it, open a terminal and ensure you are in the directory where your script is saved.

The program takes two required command-line arguments: a mortgage amount and an interest rate (expressed as a float between 0 and 1). It also allows the following optional arguments: -y (the term of the mortgage in years), -n (the number of annual payments), and -p (the target payment). Below are some examples of how to use the program. The examples assume you are using macOS and your program is called mortgage.py. If you are using Windows, replace python3 with python.

(5/5)
Attachments:

Related Questions

. Introgramming & Unix Fall 2018, CRN 44882, Oakland University Homework Assignment 6 - Using Arrays and Functions in C

DescriptionIn this final assignment, the students will demonstrate their ability to apply two ma

. The standard path finding involves finding the (shortest) path from an origin to a destination, typically on a map. This is an

Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t

. Develop a program to emulate a purchase transaction at a retail store. This program will have two classes, a LineItem class and a Transaction class. The LineItem class will represent an individual

Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th

. SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

. Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define:

1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of

Ask This Question To Be Solved By Our ExpertsGet A+ Grade Solution Guaranteed

expert
Um e HaniScience

572 Answers

Hire Me
expert
Muhammad Ali HaiderFinance

883 Answers

Hire Me
expert
Husnain SaeedComputer science

696 Answers

Hire Me
expert
Atharva PatilComputer science

568 Answers

Hire Me
March
January
February
March
April
May
June
July
August
September
October
November
December
2025
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
SunMonTueWedThuFriSat
23
24
25
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
00:00
00:30
01:00
01:30
02:00
02:30
03:00
03:30
04:00
04:30
05:00
05:30
06:00
06:30
07:00
07:30
08:00
08:30
09:00
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
22:00
22:30
23:00
23:30