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

[Projeto] Minha solução do desafio


import re

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.valida_url()
        self.url_base = self.get_url_base()
        self.url_parametros = self.get_url_parametros()

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

    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.")
        
        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.")
        else:
            print("A url é válida.")
      
    def get_url_base(self):
        indice = self.url.find('?')
        return self.url[:indice]
    
    def get_url_parametros(self):
        indice = self.url.find('?')
        return self.url[indice + 1:]

    def get_valor_parametro(self, parametro_busca):
        indice_parametro = self.url_parametros.find(parametro_busca)

        indice_valor = indice_parametro + len(parametro_busca) + 1
        indice_e_comercial = self.url_parametros.find('&', indice_valor)

        if indice_e_comercial == -1:
            return self.url_parametros[indice_valor:]
        else:
            return self.url_parametros[indice_valor:indice_e_comercial]
  
    def __str__(self):
        return self.url + "\n" + "Parâmetros: " + self.get_url_parametros() + "\n" + "URL Base: " + self.get_url_base()

extrator = ExtratorURL('bytebank.com/cambio?moedaDestino=dolar&quantidade=100&moedaOrigem=real')

dolar = 5.50

def conversao_dolar_real():
    moeda_origem = extrator.get_valor_parametro("moedaOrigem")
    moeda_destino = extrator.get_valor_parametro("moedaDestino")
    quantidade = extrator.get_valor_parametro("quantidade")
    
    if moeda_origem == 'dolar' and moeda_destino == 'real':
        return float(quantidade) / dolar
    elif moeda_origem == 'real' and moeda_destino == 'dolar':
        return float(quantidade) * dolar
    else:
        raise ValueError("A url não possui ambos parâmetros.")

print(conversao_dolar_real())
1 resposta
solução!

Olá, Marcos! Tudo bem com você? Espero que sim!

Dei uma olhada no seu código e ele está bem organizado e condizente com o que foi passado pelo instrutor, e isso mostra o quão comprometido você está com o curso.

Caso surjam quaisquer dúvidas eu estarei à sua disposição.

Abraços e bons estudos!