Skip to content

Commit 95601d4

Browse files
author
Pavel Loginov
committed
change report and pcost
1 parent ed39d26 commit 95601d4

2 files changed

Lines changed: 19 additions & 11 deletions

File tree

‎Work/pcost.py‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ def portfolio_cost(filename: str) -> float:
88
with open(filename, 'rt') as f:
99
total_cost = 0
1010
rows = csv.reader(f)
11-
next(rows)
12-
for row in rows:
11+
headers = next(rows)
12+
for idx, row in enumerate(rows, start=1):
13+
record = dict(zip(headers, row))
1314
try:
14-
total_cost += int(row[1]) * float(row[2])
15+
total_cost += int(record['shares']) * float(record['price'])
1516
except ValueError:
16-
print('broken line', row)
17+
print(f'Row {idx}: Couldn\'t convert: {row}')
1718

1819
return total_cost
1920

‎Work/report.py‎

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,16 @@ def read_portfolio(filename: str) -> list:
99
portfolio = []
1010
with open(filename, 'rt') as f:
1111
rows = csv.reader(f)
12-
next(rows) # skip the header
12+
headers = next(rows) # skip the header
1313
for row in rows:
14+
record = dict(zip(headers, row))
15+
stock = {
16+
'name': record['name'],
17+
'shares': int(record['shares']),
18+
'price': float(record['price'])
19+
}
1420
try:
15-
portfolio.append({'name': row[0], 'shares': int(row[1]), 'price': float(row[2])})
21+
portfolio.append(stock)
1622
except ValueError:
1723
print('broken line', row)
1824

@@ -40,7 +46,7 @@ def compute_investment_results(portfolio: list, prices: dict) -> str:
4046
result = 0.0
4147
for asset in portfolio:
4248
try:
43-
result += asset['shares'] * (prices[asset['name']] - asset['price'])
49+
result += int(asset['shares']) * (float(prices[asset['name']]) - float(asset['price']))
4450
except KeyError:
4551
print('no asset in given prices', asset['name'])
4652

@@ -56,8 +62,9 @@ def make_report(portfolio: list, prices: dict) -> list:
5662
try:
5763
report.append((
5864
asset['name'],
59-
asset['shares'],
60-
prices[asset['name']], prices[asset['name']] - asset['price']
65+
int(asset['shares']),
66+
float(prices[asset['name']]),
67+
float(prices[asset['name']]) - float(asset['price'])
6168
))
6269
except KeyError:
6370
print('no asset in given prices', asset['name'])
@@ -82,10 +89,10 @@ def prettify_report(report: list, headers: tuple) -> None:
8289
if len(sys.argv) == 2:
8390
filename = sys.argv[1]
8491
else:
85-
filename = 'Data/portfolio.csv'
92+
filename = 'Data/portfoliodate.csv'
8693

8794
prices = read_prices('Data/prices.csv')
88-
portfolio = read_portfolio('Data/portfolio.csv')
95+
portfolio = read_portfolio(filename)
8996
report = make_report(portfolio, prices)
9097
headers = ('Name', 'Shares', 'Price', 'Change')
9198

0 commit comments

Comments
 (0)