1
resposta

Desafio startswith(), endswith()

Boa tarde!

Seria válido dessa forma?

    def valida_url(self):
        if not self.url:
            raise ValueError ('URL vazia')
        elif self.url.endswith('/cambio') or self.url.endswith('.com'):
            raise ValueError(f'URL {self.url} não possui valores a serem extraídos.')

    def get_url_base(self):

        if self.url.startswith('https', 0, 7):
            inicio_https = len('https://')
            indice_interrogacao = self.url.find('?')
            url_base = self.url[inicio_https + 1:indice_interrogacao]
            return url_base

        elif self.url.startswith('http://www.'):
            inicio_https_www = len('http://www.')
            indice_interrogacao = self.url.find('?')
            url_base = self.url[inicio_https_www + 1:indice_interrogacao]
            return url_base

        else:
            indice_interrogacao = self.url.find('?')
            url_base = self.url[:indice_interrogacao]
            return url_base
1 resposta

Olá Fabio, tudo bem com você?

Meus parabéns pela implementação do código, fico feliz em acompanhar o seu desenvolvimento junto a Alura.

O código proposto é válido sim.

Nele existem dois pontos que recomendo mudanças. As mudanças recomendadas são no ponto de início do fatiamento da URL, quando informamos o ponto de início de um fatiamento ele será inclusivo, ou seja, o valor informado será considerado no momento do fatiamento, já o ponto de parada é exclusivo, assim o valor não será considerado, parando um valor antes do valor informado. O índice (posição) é contado da direita para esquerda iniciando pelo zero(0).

  • Recomendo que seja retirado o mais um (+ 1) na seguintes linhas do método get_url_base, mostradas abaixo já modificadas.:

    url_base = self.url[inicio_https:indice_interrogacao] 
  • E na linha:

    url_base = self.url[inicio_https_www:indice_interrogacao]

O valor passado para as variáveis inicio_https e inicio_https são fornecidos através da função len('https://') e len('http://www.'); a função len() fornece o comprimento de um objeto, nesse caso o comprimento de duas string, no exemplo ele retorna respectivamente 8 e 11.

  • Considerando a seguinte URL de exemplo:

    https://bytebank.com/cambio?moedaDestino=real&moedaOrigem=dolar&quantidade=115

Na URL acima nosso índice 8, fornecido pela variável inicio_https, corresponde a letra b, contando iniciando do zero(0) da esquerda para a direita, como explicado anteriormente, se adicionarmos o um (1) ao início do fatiamento, estamos iniciando o fatiamento a partir do índice 9, assim seria fatiado a partir da letra y.

As mudanças têm como objetivo pegar a URL base completa, apresentando a primeira letra.

Lembro que o teste do código foi realizado juntamente com o código da Aula, recomendo que teste o proposto e caso seja gerado algum erro peço que envie o código completo para que possa ser realizado os testes com ele.

Para aprimorar ainda mais o seu aprendizado sobre o fatiamento, recomendo a leitura do seguinte artigo, que apresenta exemplos de uso do fatiamento.

Conte sempre com o fórum.

Fico à disposição em caso de dúvidas.

Abraços e bons estudos.