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