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

Erro no código.

Não consegui identificar onde está o erro nesse código:

class ExtratorArgumentoURL:
    def __init__(self, url):
        if self.urlEhValida(url):
            self.url = url.lower()
        else:
            raise LookupError("url inválida!")

    @staticmethod
    def urlEhValida(url):
        if url and url.startswith('https://www.bytebank.com.br/'):
            return True
        else:
            return False

    def extraiArgumentos(self):
        buscaMoedaOrigem                = "moedaorigem".lower()
        buscaMoedaDestino               = "moedadestino".lower()

        inicioSubstringMoedaOrigem      = self.encontraIndiceInicioSubstring(buscaMoedaOrigem)
        finalSubstringMoedaOrigem       = self.url.find("&")
        moedaOrigem                     = self.url[inicioSubstringMoedaOrigem:finalSubstringMoedaOrigem]

        if moedaOrigem == "moedadestino":
            self.trocaMoedaOrigem()
            indiceInicialMoedaOrigem    = self.encontraIndiceInicioSubstring(trocaMoedaOrigem)
            indicefinalMoedaOrigem      = self.url.find("&")
            moedaOrigem                 = self.url[indiceInicialMoedaOrigem:indicefinalMoedaOrigem]


        inicioSubstringMoedaDestino     = self.encontraIndiceInicioSubstring(buscaMoedaDestino)
        finalSubstringMoedaDestino      = self.url.find("&valor")
        moedaDestino                    = self.url[inicioSubstringMoedaDestino:finalSubstringMoedaDestino]

        return moedaOrigem, moedaDestino

    def retornaValor(self):
        buscaValor                      = "Valor=".lower()
        inicioSubstringValor            = self.encontraIndiceInicioSubstring(buscaValor)
        valor                           = self.url[inicioSubstringValor:]
        return valor

    def encontraIndiceInicioSubstring(self, moedaOuValor):
        return self.url.find(moedaOuValor) + len(moedaOuValor)

    def trocaMoedaOrigem (self, trocaMoedaOrigem):
        self.url                        = self.url.replace("moedadestino", "real", 1)
        print(self.url)

Depois tentei imprimir:

from String import ExtratorArgumentoURL
url ="https://www.bytebank.com.br/cambio?moedaorigem=moedadestino&moedadestino=dolar&valor=150"
argumentosURL = ExtratorArgumentoURL
moedaOrigem,moedaDestino = argumentosURL.extraiArgumentos()
valor = argumentosURL.retornaValor()

print(moedaOrigem,moedaDestino,valor)

Apareceu a mensagem:

Traceback (most recent call last): File "C:/py/pycharm/String_aplication.py", line 4, in moedaOrigem,moedaDestino = argumentosURL.extraiArgumentos() TypeError: extraiArgumentos() missing 1 required positional argument: 'self'

2 respostas
solução!

Oi Erica, como você está? Espero que esteja bem =)

Esse erro está acontecendo porque ao instanciar a classe ExtratorArgumentoURL precisamos passar como argumento a url. Da seguinte forma:

url ="https://www.bytebank.com.br/cambio?moedaorigem=moedadestino&moedadestino=dolar&valor=150"
argumentosURL = ExtratorArgumentoURL(url) # passando a url como argumento da classe
moedaOrigem,moedaDestino = argumentosURL.extraiArgumentos()
valor = argumentosURL.retornaValor()

print(moedaOrigem,moedaDestino,valor)

Qualquer coisa é só falar. Abraços e bons estudos!

MULHER! muito obrigada.

Sabia que era algo simples que estava deixando passar rs