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

[Dúvida] Eu fiz esse exercício, porém, não está retornando nada no console, mesmo colocando

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.valida_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!")

    def get_url_base(self):
        ind_int = self.url.find('?')
        url_base = self.url[:ind_int]
        return url_base

    def get_url_param(self):
        ind_int = self.url.find('?')
        url_param = self.url[ind_int + 1]
        return url_param

    def get_valor_param(self, param_busca):
        ind_param = self.get_url_param().find(param_busca)
        ind_valor = ind_param + len(param_busca) + 1
        ind_e_com = self.get_url_param().find('&', ind_valor)

        if ind_e_com == -1:
            valor = self.get_url_param()[ind_valor:]
        else:
            valor = self.get_url_param()[ind_valor:ind_e_com]
        return valor



url = 'bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar'
extrator_url = ExtratorURL(url)
valor_quant = extrator_url.get_valor_param('quantidade')
print(valor_quant)
1 resposta
solução!

Olá, Gustavo, tudo bem?

Analisei o seu código e notei um erro no método get_url_param.

Neste método, você está retornando apenas o primeiro caractere após o '?' da URL. O código url_param = self.url[ind_int + 1] está pegando apenas o próximo caractere após o '?'. O que você precisa é pegar toda a string após o '?'.

Para corrigir isso, você pode alterar a linha para url_param = self.url[ind_int + 1:], que irá retornar toda a string a partir do caractere depois do '?'.

Seu método get_url_param corrigido ficaria assim:

def get_url_param(self):
    ind_int = self.url.find('?')
    url_param = self.url[ind_int + 1:]
    return url_param

Com essa correção, seu código deve retornar o valor esperado.

Espero ter ajudado.

Caso surja alguma dúvida, é só compartilhar no fórum.

Abraços e bons estudos!

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