Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio da moeda

Não estou satisfeito com o resultado do desafio. Tentei deixar o resultado com duas casas após a vírgula (ponto), só que ainda não encontrei solução. Tentei o float, depois o Decimal, conforme o código abaixo. Também decidi mexer na taxa de câmbio, como eventulamente aparece em transações, daí o método retornou algo confuso:

import re from decimal import Decimal

class Url:

##todos os demais métodos, como sanitizar(), validar_url() e outros

def extrair_valor(self, busca):
    url_parametros = self.extrair_parametros()
    parametro_localizado = url_parametros.find(busca)
    valor_localizado = parametro_localizado + len(busca) + 1
    identificador_termino = url_parametros.find("&", valor_localizado)
    if identificador_termino == -1:
        return url_parametros[valor_localizado:]
    else:
        return url_parametros[valor_localizado:identificador_termino]

def cambio(self, taxa):
    print("#Operação de câmbio:")
    moeda_origem = self.extrair_valor("moedaOrigem").title()
    print(f"Moeda de origem: {moeda_origem}")
    moeda_destino = self.extrair_valor("moedaDestino").title()
    print(f"Moeda de destino: {moeda_destino}")
    print(f"Valor do câmbio: 1 {moeda_destino} = {taxa} em {moeda_origem}")
    qtde = int(self.extrair_valor("quantidade"))
    print(f"Quantidade de moeda para câmbio: {qtde}")
    valor = Decimal(qtde*taxa)
    print(f"Valor da transação: {valor}")


teste = Url("https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100")
teste.cambio(5.532)

#------------------------------------------------ Saída do exercício
#Operação de câmbio:
Moeda de origem: Real
Moeda de destino: Dolar
Valor do câmbio: 1 Dolar = 5.532 em Real
Quantidade de moeda para câmbio: 100
Valor da transação: 553.200000000000045474735088646411895751953125
1 resposta
solução!

Olá Walmor, tudo bem com você?

Para conseguirmos definir dois números após o ponto podemos utilizar a formatação de string, como no exemplo abaixo.

valor = 122.26578
print(f"Valor da transação: {valor:.2f}")

Resultado

Valor da transação: 122.27

Onde temos:

  • .2: Define que temos dois números após o ponto.
  • f: Define que o valor será do tipo float.

Implementando no seu código, realizamos a mudança realizada na última linha do código abaixo.

def cambio(self, taxa):
    print("#Operação de câmbio:")
    moeda_origem = self.extrair_valor("moedaOrigem").title()
    print(f"Moeda de origem: {moeda_origem}")
    moeda_destino = self.extrair_valor("moedaDestino").title()
    print(f"Moeda de destino: {moeda_destino}")
    print(f"Valor do câmbio: 1 {moeda_destino} = {taxa} em {moeda_origem}")
    qtde = int(self.extrair_valor("quantidade"))
    print(f"Quantidade de moeda para câmbio: {qtde}")
    valor = qtde * taxa
    print(f"Valor da transação: {valor:.2f}")

Para saber um pouco mais sobre a formatação de sting recomendo a leitura do seguinte artigo:

O artigo está em inglês caso tenha dificuldades com o idioma, recomendo que use o tradutor que existe no navegador.

Em caso de dúvidas, fico à disposição.

Abraços e bons estudos.

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