-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcotacao_moedas.py
More file actions
82 lines (62 loc) · 2.38 KB
/
cotacao_moedas.py
File metadata and controls
82 lines (62 loc) · 2.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# cotacao_moedas.py
"""
🎯 OBJETIVO: Entender requisições HTTP e manipulação de JSON
📚 CONCEITOS: GET requests, headers, JSON parsing, tratamento de erros
"""
import requests
from datetime import datetime
def buscar_cotacao(moeda_origem="USD", moeda_destino="BRL"):
"""
Busca cotação de moedas usando a API pública AwesomeAPI
Args:
moeda_origem (str): Moeda de origem (ex: USD, EUR)
moeda_destino (str): Moeda de destino (ex: BRL, USD)
Returns:
dict: Dados da cotação ou None em caso de erro
"""
# URL da API - note o f-string para interpolação
url = f"https://economia.awesomeapi.com.br/json/last/{moeda_origem}-{moeda_destino}"
try:
# Fazendo a requisição GET
# timeout evita travamento infinito
resposta = requests.get(url, timeout=10)
# Verifica se a resposta foi bem-sucedida (status 200-299)
resposta.raise_for_status()
# Converte JSON para dicionário Python
dados = resposta.json()
return dados
except requests.exceptions.Timeout:
print("⏰ Erro: A API demorou muito para responder")
return None
except requests.exceptions.HTTPError as e:
print(f"❌ Erro HTTP: {e}")
return None
except requests.exceptions.RequestException as e:
print(f"❌ Erro na requisição: {e}")
return None
def formatar_cotacao(dados):
"""
Formata os dados da API de forma legível
"""
if not dados:
return "Sem dados para exibir"
# A API retorna uma chave como "USDBRL"
chave = list(dados.keys())[0]
cotacao = dados[chave]
resultado = f"""
💰 COTAÇÃO ATUAL
━━━━━━━━━━━━━━━━━━━━━━━━━━━
Par: {cotacao['code']} → {cotacao['codein']}
Valor: R$ {float(cotacao['bid']):.2f}
Variação: {float(cotacao['pctChange']):.2f}%
Atualização: {cotacao['create_date']}
━━━━━━━━━━━━━━━━━━━━━━━━━━━
"""
return resultado
if __name__ == "__main__":
print("🌍 Buscando cotação do dólar...")
# Busca a cotação
dados = buscar_cotacao("USD", "BRL")
# Exibe de forma formatada
print(formatar_cotacao(dados))
# 🎯 DESAFIO EXTRA: Tente buscar EUR-BRL também!