1
resposta

Minha solução do desafio

import re

class ExtratorURL:
    def __init__(self, url):
        self.url = self.limpa_espaco_vazio(url)
        self.valida_url()
    #LIMPEZA DA URL (SANITIZAÇÃO)
    def limpa_espaco_vazio(self,url):
        if(type(url) == str):
            return url.strip()
        else:
            return ''
    #VALIDAÇÃO DA URL
    def valida_url(self):
        if(not self.url):
            raise ValueError('A URL esta vazia')
        #COMPARA O PADRÃO CRIADO COM A STRING DO OBJETO. #É PRECISO IMPORTAR RE
        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')
    #FATIA A BASE DA URL
    def get_url_base(self):
        indice_interrogacao = self.url.find('?')
        url_base = self.url[:indice_interrogacao]
        return url_base
    #FATIA O PARAMETRO DA URL
    def get_url_parametro(self):
        indice_interrogacao = self.url.find('?')
        url_parametro = self.url[indice_interrogacao + 1:]
        return url_parametro
    #FATIA O VALOR DO PARAMETRO INFORMADO NO 'PARAMETRO_BUSCA'
    def get_valor_parametro(self, parametro_busca):
        indice_parametro = self.get_url_parametro().find(parametro_busca)
        indice_valor = indice_parametro + len(parametro_busca) + 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
    #MÉTODO ESPECIAL PARA PERMITIR A CONTAGEM DOS CARACTERES DO OBJETO.
    def __len__(self):
        return len(self.url)
    #MÉTODO ESPECIAL PARA PERMITIR IMPRIMIR O VALOR DO OBJETO.
    def __str__(self):
        return self.url

url = 'https://bytebank.com/cambio?quantidade=100&moedaOrigem=dolar&moedaDestino=real'
extrator_url = ExtratorURL(url) #OBJETO

valor_dolar = 5.50
moeda_Origem = extrator_url.get_valor_parametro('moedaOrigem') #IMPRIME O VALOR DA MOEDA DE ORIGEM
moeda_Destino = extrator_url.get_valor_parametro('moedaDestino') #IMPRIME O VALOR DA MOEDA DE DESTINO
quantidade = extrator_url.get_valor_parametro('quantidade') #IMPRIME A QUANTIDADE

if(moeda_Origem == 'dolar' and moeda_Destino == 'real'): #CONVERSÃO DE DOLAR PARA REAL
    conversao_dolar_real = int(quantidade) * valor_dolar
    print(f'O valor de ${quantidade} dolares, equivale a R${conversao_dolar_real} reais')

elif(moeda_Origem == 'real' and moeda_Destino == 'dolar'): #CONVERSÃO DE REAL PARA DOLAR
    conversao_real_dolar = int(quantidade) / valor_dolar
    print(f'O valor de R${quantidade} reais, equivale a ${conversao_real_dolar} dolares')

else:
    print('A conversão de moedas não esta disponível')
1 resposta

Olá Henrique, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Fico feliz que tenha compartilhado com a comunidade do fórum Alura o seu desenvolvimento. O uso dos comentários ao longo do código é muito importante para fixarmos o que estamos aprendendo.

Em caso de dúvidas encontro-me à disposição.

Abraços e bons estudos.