Reference no: EM133531033
Fundamentals of Programming
ASSIGNMENT - Mortgage Calculator
Overview
In this assignment you will have the opportunity to test your Python skills in developing classes and using matplotlib library. Throughout the assignment you are expected to apply the principles of problem solving that we have already discussed in this course.
Learning Outcome 1: Identify and use the correct syntax of a common programming language.
Learning Outcome 2: Recall and use typical programming constructs to design and implement simple software solutions.
Learning Outcome 3: Reproduce and adapt commonly used basic algorithms.
Learning Outcome 4: Explain the importance of programming style concepts (documentation, mnemonic names, indentation).
Skills:
S2. Write and implement a solution algorithm using basic programming constructs.
S3. Demonstrate debugging and testing skills whilst writing code.
Application of knowledge and skills:
A1. Develop self-reliance and judgement in adapting algorithms to diverse contexts.
A2. Design and write program solutions to identified problems using accepted design constructs.
ASSESSMENT DETAILS
Introduction. Your assignment is to write a Python program that takes inputs for the Loan Amount, Loan Term and Interest Rate and then calculates and displays values of Weekly (Fortnightly, Monthly) Repayments. Also, the program plots the values of Remaining Principal by years.
Below is explained how to calculate these values:
First, let's assume the following notations (in your program, you will input these values from the command line):
L - loan amount in AUD. Y - loan term in years. p - interest rate.
k - repayment frequency in days (i.e., weekly - 7 days, fortnightly - 14 days, monthly - 30 days).
Repayments, P0, are calculated by the following formula:
1. Programming Tasks
Task 1.1. Develop a Mortgage class.
The class should have the following attributes (instance variables):
loan - for the loan amount in AUD. years - loan term in years. interest - interest rate.
r_frequency - repayment frequency in days.
These attributes should be defined in the constructor, init . Also, the class should define the following methods:
repayments(self) - calculates the value of repayments using the formula provided in the introduction (for P0) and returns the calculated value.
balance_after(self,n) - calculates the remaining balance (debt) after n years using the formula provided in the introduction (for Bn) and returns the calculated value.
str (self) - returns user readable string representation of a mortgage object, i.e.: loan amount, loan term, interest and repayments. The output of this method should be similar to the following:
Loan Amount: 100000.0 AUD Loan Term (Years): 20 Interest: 4.8%
Fortnightly Repayments: 298.61
draw_balance_graph(self) - using the matplotlib library, the method plots a graph of the Remaining Balances by years using balance_after method. The output of this method should be similar to the following:
Task 1.2. Write a main() function.
This should be your main program that:
1. Prompts and takes inputs for the loan amount, loan term, interest rate and repayment frequency.
2. Creates a Mortgage object using the entered values.
3. Using the Mortgage object's methods, prints the mortgage information on screen and, and if required, plots the mortgage balances by years.
You are required to use exception handling to make your program robust (foolproof) i.e., if the user enters an incorrect value, the program won't crash, but instead it will prompt the user to enter a correct value. Use the following constraints for the correct inputs:
loan - must be a positive float value. years - must be a positive int value. interest - must be a positive float value.
r_frequency - must be one of the following values: 7, 14, or
30.
3. Below is an example of the program's run. Please note how it handles incorrect values:
Your documentation should be in PDF format.
Assignments will be marked on the basis of fulfilment of the requirements and the quality of the work.
In addition to the marking criteria, marks may be deducted for failure to comply with the assignment requirements, including (but not limited to):
• Incomplete implementation(s), and
• Incomplete submissions (e.g., missing files), and
• Poor spelling and grammar.
You might be asked to demonstrate and explain your work.
Attachment:- Mortgage Calculator.rar