1
resposta

Duvida no desafio

Tentei implementar validação utilizando os métodos endswith e startswith porém o programa não funciona como deveria.

Quando eu deixo dessa forma ele não roda independente a URL estar retornando True ou não:

```    def valida_url(self):
        if self.url == "":
            raise ValueError("A URL está vazia.")
        elif self.url != self.url.startswith(prefixo):
            raise ValueError("A URL é invalida.")
        elif self.get_url_base() != self.get_url_base().endswith('/cambio'):
            raise ValueError("A URL é invalida.")
prefixo = 'https://', 'bytebank'


#Quando eu deixo dessa forma ele lê sem fazer a verificação desses métodos:

```    def valida_url(self):
        if self.url == "":
            raise ValueError("A URL está vazia.")
        elif self.url == self.url.startswith(prefixo):
            raise ValueError("A URL é invalida.")
        elif self.get_url_base() == self.get_url_base().endswith('/cambio'):
            raise ValueError("A URL é invalida.")

Qual seria a maneira correta de implementar esses métodos?

1 resposta

Oi Edison, tudo bem?

O que eu percebi do seu código é que você está comparando o valor de uma string (self.url) com o valor do startswith e endswith que retornam os valores booleanos True ou False. Se você for ao console e digitar "abc" == True ou "abc" == False verá que sempre o retorno será False.

Penso, portanto, que para alcançar o seu objetivo, perguntar se a url (self.url) começa ou termina com determinada string retornará um True ou False, que te permitirá levantar (raise) o erro ou não.

    def valida_url(self):
        if self.url == "":
            raise ValueError("A URL está vazia.")
        elif not self.url.startswith("https://"):
            raise ValueError("A URL é invalida.")
        elif not self.get_url_base().endswith('/cambio'):
            raise ValueError("A URL é invalida.")

Espero ter ajudado! Abraços e bons estudos!