Skip to content

Latest commit

 

History

History
46 lines (35 loc) · 1.03 KB

soln1_4.md

File metadata and controls

46 lines (35 loc) · 1.03 KB

Exercise 1.4 - Solution

(a) Defining a function

# pcost.py

def portfolio_cost(filename):
    total_cost = 0.0
    with open(filename) as f:
        for line in f:
            fields = line.split()
            nshares = int(fields[1])
            price = float(fields[2])
            total_cost = total_cost + nshares * price
    return total_cost

print(portfolio_cost('Data/portfolio.dat'))

(b) Adding some error handling

# pcost.py

def portfolio_cost(filename):
    total_cost = 0.0
    with open(filename) as f:
        for line in f:
            fields = line.split()
            try:
                nshares = int(fields[1])
                price = float(fields[2])
                total_cost = total_cost + nshares*price

            # This catches errors in int() and float() conversions above
            except ValueError as e:
                print("Couldn't parse:", repr(line))
                print("Reason:", e)
    return total_cost

print(portfolio_cost('Data/portfolio3.dat'))

Back