Functions (g06)

Spring 2022 PJW

#  Function for reading a set of cash flows from a file. Accepts
#  the name of a file and returns a list of payment objects with
#  two attributes: t and amt.

def read_cashflow(filename):

    pmts = []
    fh = open(filename)
    for line in fh:
        words = line.split()
        new_pmt = {


    return pmts

#  Function for computing the NPV of a list of cash flows. Accepts an
#  interest rate and a list of payment objects.

def npv(r,cashflow):

    val = 0
    for pmt in cashflow:
        val = val + pmt['amt']/(1+r)**pmt['t']

    return val

#  Now call the functions to compute the cash flows of three projects.
#  Do it as a loop here but it could also be done as a sequence of
#  individual calls to read_cashflow() and npv().

projects = ['camry','volt','solar']
for proj in projects:
    cashflow = read_cashflow(proj+'.txt')
    npv_value = npv(0.05,cashflow)
    print('\nInput file:',proj)
    print('   NPV', round(npv_value) )

Site Index | Zoom | Admin
Peter J Wilcoxen, The Maxwell School, Syracuse University
Revised 02/13/2022