2
respostas

Fazer o IF em uma linha e aparecendo None na resposta

Eu tentei fazer o IF em uma unica linha e não deu certo. E não consegui corrigir o erro do none.

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.indice_interrogacao = self.url.find('?')
        self.valida_url()

    def sanitiza_url(self, url):
        if type(url) == str:
            return url.strip()
        else:
            return ""

    def valida_url(self):
        # Alternativa correta! O not vai “inverter” o valor booleano da variável quantidade.
        # Ou seja, caso quantidade seja vazia (“”) ou zero (0), vai ser convertida em True
        # e então o ValueError vai ser lançado.
        if not self.url:
            raise ValueError('A URL está vazia!!!')
        # if self.url.startswith('https://'):
        #     print('A URL começa com https')
        # else:
        #     print('A URL não começa com https')
        # if self.get_url_base().endswith('cambio'):
        #     print('estamos na seção de cambio do site')

    def get_comeca_com(self, palavra):
        if self.get_url_base().startswith(palavra):
            check = 'URL começa com https'
        else:
            check = 'URL Não começa com https'
        return print(check)

    def get_secao_site(self, palavra):
        if self.get_url_base().endswith(palavra):
            check = 'Estamos na seção de cambio'
        else:
            check = 'Não estamos na seção de cambio'
        return print(check)

    def get_url_base(self):
        url_base = self.url[:self.indice_interrogacao]
        return url_base

    def get_url_parametros(self):
        url_parametros = self.url[self.indice_interrogacao + 1:]
        return url_parametros.lower()

    def get_valor_parametro(self, parametro_busca):
        parametro_busca = parametro_busca.lower()
        indice_parametro = self.get_url_parametros().find(parametro_busca)
        indice_valor = indice_parametro + len(parametro_busca) + 1
        indice_e_comercial = self.get_url_parametros().find('&', indice_valor)
        if (indice_e_comercial == -1):
            valor = self.get_url_parametros()[indice_valor:]
        else:
            valor = self.get_url_parametros()[indice_valor: indice_e_comercial]
        return valor


extrator_url = ExtratorURL('https://bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar')

# Base da URL
print(extrator_url.get_url_base())

# Parametros da URL
print(extrator_url.get_url_parametros())

# valor inputado
print(extrator_url.get_valor_parametro('quantidade'))

# print do tipo de objeto do parametro valor
print(type(extrator_url.get_valor_parametro('quantidade')))

# Começa com https:// ?
print(extrator_url.get_comeca_com('https://'))

# Qual seção do site ?
print(extrator_url.get_secao_site('cambio'))

"C:\Program Files\Python37\python.exe" C:/Users/sbtvpm/PycharmProjects/pythonProject2/main.py bytebank.com/cambio quantidade=100&moedaorigem=real&moedadestino=dolar 100 <class 'str'> URL Não começa com https None Estamos na seção de cambio None

2 respostas

Remover os prints do return dentro dos Def.

class ExtratorURL:
    def __init__(self, url):
            self.url = self.sanitiza_url(url)
            self.indice_interrogacao = self.url.find('?')
            self.valida_url()

    def sanitiza_url(self, url):
        if type(url) == str:
            return url.strip()
        else:
            return ""

    def valida_url(self):
        if not self.url:
            raise ValueError('A URL está vazia!!!')

    def get_comeca_com(self, palavra):
        if self.get_url_base().startswith(palavra):
            check = 'URL começa com https'
        else:
            check = 'URL Não começa com https'
        return check

    def get_secao_site(self, palavra):
        if self.get_url_base().endswith(palavra):
            check = 'Estamos na seção de cambio'
        else:
            check = 'Não estamos na seção de cambio'
        return check

    def get_url_base(self):
        url_base = self.url[:self.indice_interrogacao]
        return url_base

    def get_url_parametros(self):
        url_parametros = self.url[self.indice_interrogacao + 1:]
        return url_parametros.lower()

    def get_valor_parametro(self, parametro_busca):
        parametro_busca = parametro_busca.lower()
        indice_parametro = self.get_url_parametros().find(parametro_busca)
        indice_valor = indice_parametro + len(parametro_busca) + 1
        indice_e_comercial = self.get_url_parametros().find('&', indice_valor)
        if (indice_e_comercial == -1):
            valor = self.get_url_parametros()[indice_valor:]
        else:
            valor = self.get_url_parametros()[indice_valor: indice_e_comercial]
        return valor


extrator_url = ExtratorURL('https://bytebank.com/cambio?quantidade=100&moedaOrigem=real&moedaDestino=dolar')

# Base da URL
print(extrator_url.get_url_base())

# Parametros da URL
print(extrator_url.get_url_parametros() )

# valor inputado
print(extrator_url.get_valor_parametro('quantidade') )

# print do tipo de objeto do parametro valor
print(type(extrator_url.get_valor_parametro('quantidade')))

# Começa com https:// ?
print(extrator_url.get_comeca_com('https://'))

# Qual seção do site ?
print(extrator_url.get_secao_site('cambio'))

If em uma linha

    def get_comeca_com(self, palavra):
        check = 'URL começa com https' if self.get_url_base().startswith(palavra) else 'URL Não começa com https'
        return check