Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Minha solução para o desafio!

import re

class ExtratorURL: def init(self, url): self.url = self.sanitiza_url(url) self.valida_url() self.indice_interrogacao = self.acha_indice_interrogacao()

def sanitiza_url(self, url):
    if (type(url) == str):
        return url.strip()
    else:
        return ""

def valida_url(self):
    if not (self.url):
        raise ValueError("A URL está vazia")
    else:
        padrao_url = re.compile("(http(s)?://)?(www.)?bytebank.com(.br)?/cambio")
        match = padrao_url.match(self.url)

        if not (match):
            raise ValueError("A URL não é válida")

def acha_indice_interrogacao(self):
    return self.url.find("?")

def get_url_base(self):
    url_base = self.url[:self.indice_interrogacao]
    return url_base

def get_url_parametro(self):
    url_parametro = self.url[self.indice_interrogacao + 1:]
    return url_parametro

def get_valor_parametro(self, busca_parametro):
    indice_parametro = self.get_url_parametro().find(busca_parametro)
    indice_valor = indice_parametro + len(busca_parametro) + 1
    indice_e_comercial = self.get_url_parametro().find("&", indice_valor)

    if (indice_e_comercial == -1):
        valor = self.get_url_parametro()[indice_valor:]
    else:
        valor = self.get_url_parametro()[indice_valor:indice_e_comercial]

    return valor

def converte_moeda(self):
    valor_dolar = 5.50
    moeda_origem = self.get_valor_parametro("moedaOrigem")
    quantidade = self.get_valor_parametro("quantidade")

    if (moeda_origem == "real"):
        conversao = f"{round(((int(quantidade)) * valor_dolar), 2)} dólares"
    else:
        conversao = f"{round(((int(quantidade)) / valor_dolar), 2)} reais"

    return conversao

def __len__(self):
    return len(self.url)

def __str__(self):
    return "URL: " + self.url + "\n" + "Base: " + self.get_url_base() + "\n" + "Parâmetros: " + self.get_url_parametro()

def __eq__(self, other):
    return self.url == other.url

extrator_url = ExtratorURL("https://bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar") print(f"Tamanho da URL: {len(extrator_url)}") print(extrator_url) valor = extrator_url.get_valor_parametro("moedaOrigem") print("-------------------------------------------------------------------------------------------") print(f"Valor procurado: {valor}") print("-------------------------------------------------------------------------------------------") conversao = extrator_url.converte_moeda() print(f"Conversão: {conversao}")

2 respostas
solução!

Olá Kaike, tudo bem?

Seu código está bem estruturado, organizado e demonstra um entendimento profundo dos conceitos de programação.

Continue a aprimorar suas habilidades e explorar novos desafios, pois você está no caminho certo para se tornar um desenvolvedor talentoso e eficaz.

Mais uma vez, parabéns pelo trabalho excepcional!

Reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

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

Muito Obrigado Victor, Abraço!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software