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

SOLUÇÃO DESAFIO

Eu fiz do jeito que pareceu o mais simples e prático pra mim.

import re

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.valida_url()

    def __len__(self):        # Função qu permite usar o len() direto no objeto
        return len(self.url)

    def __str__(self):       # Função que define o que imprime quando você manda print(NOME DO OBJETO)
        return 'URL: ' + self.url + '\n' + 'Parâmetros: ' + self.get_url_parametros() + '\n' + 'URL Base: ' + self.get_url_base()

    def sanitiza_url(self, url):
        return url.strip()

    def valida_url(self):
        if not self.url:
            raise ValueError("A URL está vazia")

        padrao_url = re.compile('(http(s)?://)?(www.)?bytebank.com(.br)?/cambio')
        match = padrao_url.match(url)
        if not match:
            raise ValueError("A URL não é válida.")

    def get_url_parametros(self):
        indice_interrogacao = self.url.find('?')
        url_parametros = self.url [indice_interrogacao + 1:]
        return url_parametros

    def get_url_base(self):
        indice_interrogacao = self.url.find('?')
        url_parametros = self.url [0 : indice_interrogacao]
        return url_parametros

    def get_valor_parametro(self, parametro_busca):
        indice_parametro = self.get_url_parametros().find(parametro_busca)
        indice_valor = indice_parametro + len(parametro_busca) + 1
        indice_e_comercial = self.get_url_parametros().find('&', indice_valor)
        if indice_e_comercial == -1:
            valor = self.get_url_parametros()[indice_valor:]
        else:
            valor = self.get_url_parametros()[indice_valor:indice_e_comercial]
        return valor

def real_para_dolar(quantidade):
    valor_dolar = 5.50
    return'US$ {}'.format(round((quantidade * valor_dolar),2)))

def dolar_para_real(quantidade):
    valor_dolar = 5.50
    return'R$ {}'.format(round((quantidade / valor_dolar),2))


1 resposta
solução!

Boa Thiago Ribeiro da Costa,

Gostei da solução que você propôs, afinal o resultado é o mesmo porém o código me parece muito mais robusto.

Para que mais pessoas consigam visualizar a sua solução proposta é recomendável com que você venha estar marcando este tópico como solucionado, assim pode estar ajudando ainda mais pessoas :)

Obrigado!!