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

a função altera minha a exibição da moedaDestino

acho que implementei errado o método trocaMoedaOrigem() ou o encontraIndiceInicial() e não consigo achar o erro, tudo funciona normalmente, mas ao invocar o método trocaMoedaOrigem() a variável moedaDestino passa a armazenar 'destino=dolar' e não somente 'dolar' com antes, observei os índices que o .find() estava retornando e notei um comportamento estranho, eles não estavam se alterando dps que eu invocava o método trocaMoedaOrigem(), o que é estranho pq se a url muda de tamanho consequentemente aquela palavra irá se deslocar mudando seu índice. Segue o código, estou a um tempão tentando resolver e nada rsmain.py

from ExtratorArgumentosUrl import ExtratorArgumentosUrl

url = 'cambio?moedaorigem=moedadestino&moedadestino=dolar'

argumentosUrl = ExtratorArgumentosUrl(url)

moedaOrigem, moedaDestino = argumentosUrl.extraiArgumentos(url)

print(moedaOrigem, moedaDestino)

ExtratorArgumentosUrl.py

class ExtratorArgumentosUrl :
    def __init__(self, url):
        if self.urlEhValida(url):
            self.url = url
        else:
            raise LookupError("Url Inválida!")

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

    def extraiArgumentos(self, url):
        buscaMoedaOrigem  = "moedaorigem="
        buscaMoedaDestino = "moedadestino="

        indiceInicialOrigem = self.encontraIndiceInicial(buscaMoedaOrigem)
        indiceFinalOrigem = self.url.find("&")

        moedaOrigem = url[indiceInicialOrigem:indiceFinalOrigem]

        if moedaOrigem == 'moedadestino':
            self.trocaMoedaOrigem()


        indiceInicialDestino = self.encontraIndiceInicial(buscaMoedaDestino)
        moedaDestino = url[indiceInicialDestino:]

        return moedaOrigem, moedaDestino

    def encontraIndiceInicial(self, moedaBuscada):
        resultado = self.url.find(moedaBuscada) + len(moedaBuscada) #Nesta linha nós adicionamos o tamanho(retornado em int) da palavra que está armazenada na variavel moeda, que é passada por parâmetro, ao indice que irá ser retonado.     
        return resultado

    def trocaMoedaOrigem(self):
        self.url = self.url.replace('moedadestino', 'real', 1)
3 respostas
solução!

Oi João, tente incluir uma entrada na função e retire o self, tipo assim:

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

Na outra função:

self.trocaMoedaOrigem(self, moedaDestino)

Tente inserir o self na chamada da função, pra mim deu certo. DEpois me conta se pra vc deu também ;)

Deu certinho Cauê, valeu!

Quando precisar sempre pergunte no fórum que respondemos :)