Question
1. You will develop a Python program which calculates details for a mortgage loan for one or more houses based on the input variables described
1. You will develop a Python program which calculates details for a mortgage loan for one or more houses based on the input variables described in detail below. 2. The program will first print a simple welcome message (use the provided strings), and then repeatedly ask if the user wishes to process another mortgage. If the users response is the letter Y or the letter y, the program will proceed with the steps to calculate the values associated with a new set of inputs for a mortgage loan. If the users response is anything else, the program will quit. 3. When the user chooses to process a mortgage loan, the program will prompt the user to enter the desired location of the house, the desired square footage of the house, the users maximum monthly payment, the users expected down payment, and the current APR. You should use the prompts provided for each of these inputs in the file strings.txt. Users will be advised to enter as much information as possible or NA if they dont have a value to input. The program will behave in response to which values are present and which are missing. 4. For each of the inputs, handle the input as follows. For location, the user must provide one of the following cities: Seattle, San Francisco, Austin, East Lansing. The starter file contains the corresponding property tax rates and real estate prices per square foot for each of these locations. If the user types any other value, use the average national values for those two metrics and display the unknown location message. For square footage, you may assume the user has typed a positive value or NA. If the value is numerical, convert it to a float; otherwise, you will compute a maximum square footage given the values of the other variables (presuming those values are valid). The square footage will be multiplied by the price per square foot based on the location selected. For maximum monthly payment, you may assume the user has typed a positive value or NA. If the value is numerical, convert it to a float; otherwise, you will compute the details of the mortgage loan given the values of the other variables (presuming those values are valid). For down payment, you may assume the user has typed a positive value or NA. If the value is numerical, convert it to a float; otherwise, you should assign the variable a value of 0. You will deduct the down payment from the total cost of the house to get the amount of the mortgage loan. For APR, you may assume the user has typed a positive value between 0 and 100 or NA. If it is numerical, convert it to a float and store it for use in your calculations (i.e., not as you would display it, nor as the user typed it); otherwise, assign the value stored in the APR_2023 constant that has been provided. Note: if neither desired square footage nor maximum monthly payment have been provided, display the message for not enough information. 5. If the user has provided a square footage, you should estimate the home cost for the given location based on the corresponding values. You will also need to calculate the principal value based on the estimated home cost and the down payment. Mortgage loan information will be displayed containing all the provided information as well as the monthly taxes and the monthly payment. The message should be displayed like the one shown below. In Austin, an average 1000 sq. foot house would cost $349000. A 30-year fixed rate mortgage with a down payment of $50000 at 4.0% APR results in an expected monthly payment of $526.41 (taxes) + $1427.47 (mortgage payment) = $1953.88 If the user has provided a maximum monthly payment in addition to the square footage, print a message telling the user whether they can or cannot purchase the home described given their maximum monthly payment amount. An example is shown below. Based on your maximum monthly payment of $2200.00 you can afford this house. Finally, ask the user if they wish to see the amortization table for the mortgage loan. An amortization table shows how the monthly payment will be allocated each month. Some of the payment is directed to pay off the interest owed on the loan, and the rest goes to reduce the overall balance of the loan. The amount of interest is based on the current balance remaining and the monthly interest rate. Use proper formatting for the amortization table with a header and well-spaced values for month number, interest payment, principal payment, and remaining balance (see examples). 6. If the user has not provided the square footage but has provided the maximum monthly payment, calculate the maximum square footage that their monthly payment can afford in the location specified. Report this as shown below. Hint: use the formula below and solve for the principal first. The important information related to the calculation of the mortgage loan appears below. The formula for calculating the monthly payment owed (before considering taxes or other associated costs) is: M = P ( I ( 1 + I )^N ) / ( ( 1 + I )^N 1 ) Where M = the monthly payment; P = the principal amount or current loan balance; I = the interest rate (note the APR is annual and you need a monthly rate for this calculation); N = the number of payments in the loan term. The formula for calculating the cost of a home from the desired square footage and price per square foot for a given location is: cost = square footage * price per square foot The formula for determining the amount of the mortgage loan is: loan amount = cost down payment The formula for calculating the monthly property taxes due is: monthly taxes = home price * property tax rate / 12 When creating the amortization table, you will need to multiply the remaining loan amount by the monthly contribution to the annual percentage rate. Once you have determined the amount of your payment that is used to pay of the loan interest, you can then calculate the amount of your payment that should be deducted from the remaining loan amount. payment to interest = remaining loan amount * APR / 12 payment to loan = payment payment to interest remaining loan amount = remaining loan amount payment to loan 3. The program will produce reasonable and readable output, with appropriate labels for all values displayed. Dollar amounts should be rounded to two decimal places, and percentages should be shown as a user expects (ex. the APR may be 3.5%, which in your program should be stored as 0.035). 4. When asked to format tabular data, you should consider using the string formatting descriptors. These can be found on p. 211-214 of the text. There are four columns, and these should be formatted as shown below. Month: Interest: Principal: Balance: field width 7, centered field width 9, two decimals, right-aligned field width 10, two decimals, right-aligned field width 11, two decimals, right-aligned Between each of the fields there should be a single vertical bar printed. Before each of the monetary calculations there should be a single space followed by a dollar sign. After each monetary calculation there should be a single space (before the vertical bar). NUMBER_OF_PAYMENTS = 360 SEATTLE_PROPERTY_TAX_RATE = 0.0092 SAN_FRANCISCO_PROPERTY_TAX_RATE = 0.0074 AUSTIN_PROPERTY_TAX_RATE = 0.0181 EAST_LANSING_PROPERTY_TAX_RATE = 0.0162 AVERAGE_NATIONAL_PROPERTY_TAX_RATE = 0.011 SEATTLE_PRICE_PER_SQ_FOOT = 499.0 SAN_FRANCISCO_PRICE_PER_SQ_FOOT = 1000.0 AUSTIN_PRICE_PER_SQ_FOOT = 349.0 EAST_LANSING_PRICE_PER_SQ_FOOT = 170.0 AVERAGE_NATIONAL_PRICE_PER_SQ_FOOT = 244.0 APR_2023 = 0.0668
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started