python-mastery/Exercises/soln1_4.md
2023-07-16 20:21:00 -05:00

1.0 KiB

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