Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit a5cfa04

Browse files
committed
Resolução dos exercicios do item 2_4
Resolução dos exercicios do item 2_4
1 parent cfaa1a1 commit a5cfa04

File tree

2 files changed

+18
-17
lines changed

2 files changed

+18
-17
lines changed

Work/pcost.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,16 @@ def portfolio_cost(filename):
99
compras_totais = 0.0
1010
with open(filename, "rt") as arquivo:
1111
csvfile = csv.reader(arquivo)
12-
next(csvfile)
13-
for linha in csvfile:
12+
headers = next(csvfile)
13+
for num_linha, linha in enumerate(csvfile, start=1):
14+
record = dict(zip(headers, linha))
1415
try:
15-
quant_acao = int(linha[1])
16-
preco_acao = float(linha[2])
16+
quant_acao = int(record["shares"])
17+
preco_acao = float(record["price"])
18+
valor_total_acao = quant_acao * preco_acao
19+
compras_totais += valor_total_acao
1720
except ValueError:
18-
print("Existem valores vazios ou passados em um formato incorreto.")
19-
valor_total_acao = quant_acao * preco_acao
20-
compras_totais += valor_total_acao
21+
print(f'Row {num_linha}: Couldn\'t convert: {linha}')
2122
return compras_totais
2223

2324

Work/report.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ def read_portfolio(filename):
99
portfolio = []
1010
with open(filename, 'rt') as f:
1111
rows = csv.reader(f)
12-
next(rows)
13-
for row in rows:
14-
holding = dict(nome=row[0], acoes=int(row[1]), preco=float(row[2]))
12+
cabecalho = next(rows)
13+
for number_row, row in enumerate(rows, start=1):
14+
holding = dict(zip(cabecalho, row))
1515
portfolio.append(holding)
1616
return portfolio
1717

@@ -34,25 +34,25 @@ def ganhos_perda(portfolio, acoes):
3434
diferencia_total = 0.0
3535
print("Nome\tPreco Compra\tQuantidade\tTotal da Compra\t\tPreco de Venda\t\tTotal de Venda\t\tGanho/Perda")
3636
for acao in portfolio:
37-
valor_acao_compra = acao["acoes"] * acao["preco"]
38-
valor_acao_atual = acao["acoes"] * acoes[acao["nome"]]
37+
valor_acao_compra = acao["shares"] * acao["price"]
38+
valor_acao_atual = acao["shares"] * float(acoes[acao["name"]])
3939
diferencia = valor_acao_atual - valor_acao_compra
4040
diferencia_total += diferencia
41-
print(f'{acao["nome"]:<4s} {acao["preco"]:^16.2f} {acao["acoes"]:^16d} {valor_acao_compra:^18.2f} {acoes[acao["nome"]]:^26.2f} {valor_acao_atual:^21.2f} {diferencia:^21.2f}')
41+
print(f'{acao["name"]:<4s} {acao["price"]:^16.2f} {acao["shares"]:^16d} {valor_acao_compra:^18.2f} {acoes[acao["name"]]:^26.2f} {valor_acao_atual:^21.2f} {diferencia:^21.2f}')
4242
print(f"Total de ganhos/perdas: {diferencia_total:>97.2f}")
4343

4444

4545
def make_report(portfolio, acoes):
4646
lista_acoes = []
4747
for linha in portfolio:
48-
diferencia_preco = acoes[linha["nome"]] - linha["preco"]
49-
lista_acoes.append((linha["nome"], linha["acoes"], acoes[linha["nome"]], diferencia_preco))
48+
diferencia_preco = acoes[linha["name"]] - float(linha["price"])
49+
lista_acoes.append((linha["name"], linha["shares"], acoes[linha["name"]], diferencia_preco))
5050
return lista_acoes
5151

5252

53-
report = make_report(read_portfolio("Work\\Data\\portfolio.csv"), read_prices("Work\\Data\\prices.csv"))
53+
report = make_report(read_portfolio("Work\\Data\\portfoliodate.csv"), read_prices("Work\\Data\\prices.csv"))
5454
cabecalho = ("Name", "Shares", "Price", "Change")
5555
print(f'{cabecalho[0]:>10s} {cabecalho[1]:>10s} {cabecalho[2]:>10s} {cabecalho[3]:>10s}')
5656
print("---------- " * 4)
5757
for name, shares, price, change in report:
58-
print(f'{name:>10s} {shares:>10d} {price:>10.2f} {change:>10.2f}')
58+
print(f'{name:>10s} {int(shares):>10d} {price:>10.2f} {change:>10.2f}')

0 commit comments

Comments
 (0)