Added solution code
This commit is contained in:
55
Solutions/2_7/report.py
Normal file
55
Solutions/2_7/report.py
Normal file
@@ -0,0 +1,55 @@
|
||||
# report.py
|
||||
import csv
|
||||
|
||||
def read_portfolio(filename):
|
||||
'''
|
||||
Read a stock portfolio file into a list of dictionaries with keys
|
||||
name, shares, and price.
|
||||
'''
|
||||
portfolio = []
|
||||
with open(filename) as f:
|
||||
rows = csv.reader(f)
|
||||
headers = next(rows)
|
||||
|
||||
for row in rows:
|
||||
stock = {
|
||||
'name' : row[0],
|
||||
'shares' : int(row[1]),
|
||||
'price' : float(row[2])
|
||||
}
|
||||
portfolio.append(stock)
|
||||
|
||||
return portfolio
|
||||
|
||||
def read_prices(filename):
|
||||
'''
|
||||
Read a CSV file of price data into a dict mapping names to prices.
|
||||
'''
|
||||
prices = {}
|
||||
with open(filename) as f:
|
||||
rows = csv.reader(f)
|
||||
for row in rows:
|
||||
try:
|
||||
prices[row[0]] = float(row[1])
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
return prices
|
||||
|
||||
portfolio = read_portfolio('../../Work/Data/portfolio.csv')
|
||||
prices = read_prices('../../Work/Data/prices.csv')
|
||||
|
||||
# Calculate the total cost of the portfolio
|
||||
total_cost = 0.0
|
||||
for s in portfolio:
|
||||
total_cost += s['shares']*s['price']
|
||||
|
||||
print('Total cost', total_cost)
|
||||
|
||||
# Compute the current value of the portfolio
|
||||
total_value = 0.0
|
||||
for s in portfolio:
|
||||
total_value += s['shares']*prices[s['name']]
|
||||
|
||||
print('Current value', total_value)
|
||||
print('Gain', total_value - total_cost)
|
||||
Reference in New Issue
Block a user