@@ -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:
8289if len (sys .argv ) == 2 :
8390 filename = sys .argv [1 ]
8491else :
85- filename = 'Data/portfolio .csv'
92+ filename = 'Data/portfoliodate .csv'
8693
8794prices = read_prices ('Data/prices.csv' )
88- portfolio = read_portfolio ('Data/portfolio.csv' )
95+ portfolio = read_portfolio (filename )
8996report = make_report (portfolio , prices )
9097headers = ('Name' , 'Shares' , 'Price' , 'Change' )
9198
0 commit comments