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):
buscaMoedaOrigem = "moedaorigem="
buscaMoedaDestino = "moedadestino="
#indiceInicialMoedaDestino = self.encontraIndiceInicial(buscaMoedaDestino)
#moedaDestino = self.url[indiceInicialMoedaDestino:]
indiceInicialMoedaOrigem = self.encontraIndiceInicial(buscaMoedaOrigem)
indiceFinalMoedaOrigem = self.url.find("&")
moedaOrigem = self.url[indiceInicialMoedaOrigem:indiceFinalMoedaOrigem]
if moedaOrigem == 'moedadestino':
self.trocaMoedaOrigem()
indiceInicialMoedaOrigem = self.encontraIndiceInicial(buscaMoedaOrigem)
indiceFinalMoedaOrigem = self.url.find("&")
moedaOrigem = self.url[indiceInicialMoedaOrigem:indiceFinalMoedaOrigem]
indiceInicialMoedaDestino = self.encontraIndiceInicial(buscaMoedaDestino)
moedaDestino = self.url[indiceInicialMoedaDestino:]
return moedaOrigem, moedaDestino
def encontraIndiceInicial(self, moedaBuscada):
return self.url.find(moedaBuscada) + len(moedaBuscada)
def trocaMoedaOrigem(self):
self.url = self.url.replace('moedadestino', 'real', 1)
print(self.url)
url = 'https://www.bytebank.com.br/cambio?moedaorigem=real&moedadestino=dolar'
argumentosUrl = ExtratorArgumentosUrl(url)
moedaOrigem, moedaDestino = argumentosUrl.extraiArgumentos()
print(moedaOrigem, moedaDestino)
Este é o código do primeiro video da aula 3: Se eu rodo dessa forma, o print retorna corretamente, real dolar. E se eu troco a palavra "real" da url por "moedadestino" também roda corretamente.
Porém, se eu pego essas linhas:
indiceInicialMoedaDestino = self.encontraIndiceInicial(buscaMoedaDestino)
moedaDestino = self.url[indiceInicialMoedaDestino:]
e deixo uma antes do if e outra depoi do if (no código acima estão as duas comentadas antes do if) ele para de funcionar, não entendo porque. Para mim ele funcionaria pois estão com a mesma identação