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

find da moedaDestino encontra o mesmo da MoedaOrigem

Olá, o meu find para o argumento da moeda destino encontra o mesmo da moeda origem:

class ExtratorDeArgumentosUrl:
    def __init__(self, url):
        if(self.url_eh_valida(url)):
            self.url = url
        else:
            raise LookupError("URL inválida!!!!!!!")

    @staticmethod
    def url_eh_valida(url):
        if url:
            return True
        else:
            return False

    def extrai_argumentos(self):

        indice_inicial_moeda_destino = self.url.find("=", 1) + 1 #Pega a segunda ocorrência

        indice_inicial_moeda_origem = self.url.find("=") + 1
        indice_final_moeda_origem = self.url.find("&")
        moeda_origem = self.url[indice_inicial_moeda_origem:indice_final_moeda_origem]
        moeda_destino = self.url[indice_inicial_moeda_destino:]

        return moeda_origem, moeda_destino

Eu consegui fazer usando o rfind("=") ao invés do find("=", 1) como estava na aula, mas gostaria de saber porque não está dando certo como o professor fez

2 respostas
solução!

Oi Felipe, tudo bem?

A estrutura do método find é essa:

string.find(value, start, end)

Ou seja, do modo que você colocou:

self.url.find("=", 1) + 1

Ele não está buscando a segunda ocorrência... Ele está buscando a primeira ocorrência a partir da posição 1. Até fui rever a aula, e lá o professor colocou dessa forma:

self.url.find("=", 15) + 1

Valeu Erick, resolvido aqui.