solution_005.py

#! /usr/bin/python3
# ===================================================================
# Compound Interest
# ===================================================================

import sys
import user_interface as ui

# -------------------------------------------------------------------
# ---- test for a positive integer
# -------------------------------------------------------------------

def is_positive_integer(s):
    x,i = ui.is_integer(s)
    if not x:
        print()
        print('Not an integer - try again')
        return (False,0)
    if i < 0:
        print()
        print('must be a positive integer - try again')
        return (False,0)
    return (True,i)


# -------------------------------------------------------------------
# ---- display the program description
# -------------------------------------------------------------------

def program_description():
    ui.clear_screen()
    print('-------------------- compound Interest --------------------')
    print('This program calculates compound interest. The user enters:')
    print('    initial investment       (dollars)')
    print('    annual interest rate     (percent)')
    print('    length of investment     (years)')
    print('    number of times the interest is compounded per year')
    print('Note: All entered values must be an integers.')


# -------------------------------------------------------------------
# ----- get positive integer value
# -------------------------------------------------------------------

def get_integer_value(prompt):

    while(True):

        print()
        s = ui.get_user_input(f'{prompt}: ')

        # ---- empty string? then exit program

        if not s:
            print()
            sys.exit()

        # ---- verify input

        x,i = is_positive_integer(s)

        if not x:
            continue

        return (True,i)


# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------

program_description()

while(True):

    print()
    print('Enter initial investment amount (dollars)')

    x,ii = get_integer_value('Initial investment')

    print()
    print('annual interest rate (percent)')

    x,ir = get_integer_value('Interest rate')

    iir = ir/100

    print()
    print('investment length (years)')

    x,il = get_integer_value('Investment length')

    print()
    print('number of times the interest is compounded per year')

    x,yc = get_integer_value('Compounded annually')

    print()
    print(f'Initial investment   (dollars)     {ii}')
    print(f'Interest rate        (percent)     {ir}')
    print(f'Length of investment (years)       {il}')
    print(f'Compounded annually  (compounded)  {yc}')

    iv = int(ii * pow((1 + iir/yc),(il * yc)))

    print(f'Investment value                   {iv}')

    ui.pause()
    ui.clear_screen()