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

AttributeError: 'NoneType' object has no attribute 'find'

Esse erro aparece depois de tentar rodar o código abaixo:

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

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

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

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

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

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

extrator_url = ExtratorURL('bytebank.com/cambio?moedaDestino=dolar&moedaOrigem=real&quantidade=100')
valor_quantidade = extrator_url.get_valor_parametro('quantidade')
print(valor_quantidade)

como devo proceder?

2 respostas

Bom dia, Rodrigo! Tudo joia?

Analisando o seu código percebi que o problema está no método get_url_parametros. Esse método é responsável por retornar os parâmetros da url, contudo, você acabou esquecendo de retornar esses parâmetros, logo, no seu método, você deve aplicar o return. Segue o exemplo de como deve ficar:

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

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
solução!

Olá, Armano. Funcionou, obrigado!

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