Python Bibliotheca
Python resources for teachers and students.

Loan and payment calculator

Description

The interest due on a loan can be calculated according to the simple formula:

I = P × R × T

where I is the interest paid, P is the amount borrowed (principal), R is the interest rate, and T is the length of the loan.

It is common for loans to be amortized which allows the lendor to collect their interest early in the loan period. We will ignore amortization for the purpose of this program. For bonus points, figure out how to do amortization and print an amortization schedule with the payment schedule. There is an excellent explanation of the amortization formula at Interest.com.

Write a program that calculates the interest due on a loan and prints a payment schedule. Make sure you round the output to two decimal places. For bonus points, figure out how to calculate amortization and print an amortization schedule. It will be your responsibility to find an appropriate format for the amortization printout.

Make sure you handle the dollars correctly! Floating point numbers in Python (and other programming languages) are subject to rouding errors when doing floating point arithmetic. For an explanation of this phenomenon, see the floating point arithmetic section of the Python tutorial. One of the most common strategies to solve the problem is to do all money-related calculations in pennies, converting back to dollars when the results are displayed. If you don't handle this issue correctly, your program won't give correct answers in all cases.

Input

The program will prompt the user for the amount borrowed, interest rate as a percentage (in annual interest terms), and the term of the loan in years.

Output

The program will print the amount borrowed, total interest paid, the amount of the monthly payment, and a payment schedule.

Sample session

Loan calculator

Amount borrowed: 100
Interest rate: 6
Term (years): 1

Amount borrowed:    $100.00
Total interest paid:  $6.00

           Amount     Remaining
Pymt#       Paid       Balance
-----      -------    ---------
  0        $ 0.00      $106.00
  1        $ 8.84      $ 97.16
  2        $ 8.84      $ 88.32
  3        $ 8.84      $ 79.48
  4        $ 8.84      $ 70.64
  5        $ 8.84      $ 61.80
  6        $ 8.84      $ 52.96
  7        $ 8.84      $ 44.12
  8        $ 8.84      $ 35.28
  9        $ 8.84      $ 26.44
 10        $ 8.84      $ 17.60
 11        $ 8.84      $  8.76
 12        $ 8.76      $  0.00

[ Copyright 2003, Tim Wilson ]

Comments, questions, or suggestions? Email the webmaster