1
resposta

[Projeto] {Projeto} Resolução exercício opcional

Fiz a resolução da seguinte maneira:

obs: Gostaria de uma dica de como utilizar uma API para obter informações atualizadas

 def conversao(self, moeda_origem, moeda_destino, quantidade):
        if moeda_origem == 'real' and moeda_destino == 'dolar'and quantidade > 0:
            return quantidade / VALOR_DOLAR
        elif moeda_origem == 'dolar' and moeda_destino == 'real' and quantidade > 0:
            return quantidade * VALOR_DOLAR
        else:
            raise ValueError("Parâmetros Inválidos")


url = "bytebank.com/cambio?quantidade=300&moedaOrigem=dolar&moedaDestino=real"
extrator_url = ExtratorURL(url)

VALOR_DOLAR = 5.20
moeda_origem = extrator_url.get_valor_parametro("moedaOrigem")
moeda_destino = extrator_url.get_valor_parametro("moedaDestino")
quantidade = extrator_url.get_valor_parametro("quantidade")

conversao = extrator_url.conversao(moeda_origem, moeda_destino, float(quantidade))
print("Quantidade: {:.2f} ({})\nConversão: {:.2f} ({})".format(float(quantidade), moeda_origem, conversao, moeda_destino))
1 resposta

Olá Kauê, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz que tenha compartilhado-o com a comunidade do fórum Alura. Sua dedicação e empenho é muito importante para o seu desenvolvimento como pessoa programadora.

Para realizar a coleta do valor do dólar atualizado a partir do consumo de uma API, podemos fazer o uso da biblioteca requests do Python fazendo uma requisição a uma API e manipularmos o retorno da requisição. Usarei no exemplo a API: https://www.exchangerate-api.com/

Será necessário realizar a instalação da biblioteca requests, basta executar o código abaixo no terminal.

python -m pip install requests 

Após a instalação da biblioteca, adicione a função abaixo (get_valor_dolar) ao arquivo que contêm a classe ExtratorURL, e adicione no topo do arquivo a importação da biblioteca requests.

import requests

def get_valor_dolar():
    response = requests.get("https://api.exchangerate-api.com/v4/latest/USD")
    if response.status_code == 200:
        data = response.json()
        return data['rates']['BRL']
    else:
        raise ValueError("Não foi possível obter o valor do dólar")

A função get_valor_dolar será responsável criar a requisição e retornar o valor atual do dólar após o consumo da API: https://www.exchangerate-api.com/

Basta atribuirmos a chamada da função get_valor_dolar a constante VALOR_DOLAR, conforme abaixo.

VALOR_DOLAR = get_valor_dolar()

Após realizar essas mudanças, salve o arquivo e execute-o.

import requests

# codigo_da_classe_ExtratorURL

def get_valor_dolar():
    response = requests.get("https://api.exchangerate-api.com/v4/latest/USD")
    if response.status_code == 200:
        data = response.json()
        return data['rates']['BRL']
    else:
        raise ValueError("Não foi possível obter o valor do dólar")


url = "bytebank.com/cambio?quantidade=300&moedaOrigem=dolar&moedaDestino=real"
extrator_url = ExtratorURL(url)

VALOR_DOLAR = get_valor_dolar()

moeda_origem = extrator_url.get_valor_parametro("moedaOrigem")
moeda_destino = extrator_url.get_valor_parametro("moedaDestino")
quantidade = extrator_url.get_valor_parametro("quantidade")

conversao = extrator_url.conversao(moeda_origem, moeda_destino, float(quantidade))
print("Quantidade: {:.2f} ({})\nConversão: {:.2f} ({})".format(float(quantidade), moeda_origem, conversao, moeda_destino))

Resultado

Quantidade: 300.00 (dolar)
Conversão: 1548.00 (real)

Para aprimorar ainda mais o seu aprendizado sobre o consumo de APIs utilizando o Python, gostaria de deixar as seguintes recomendações. A primeira, será um artigo onde é abordado com detalhes como podemos realizar o consumo da API do GitHub.

A segunda recomendação, será um curso, onde é apresentado sobre como realizar a validação de dados e o consumo da API ViaCep.

Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!