Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

conclusão do desafio

import re
class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.valida_url()

    def sanitiza_url(self, url):
        return url.strip()

    def valida_url(self):
        if self.url == "":
            raise ValueError("A URL está vazia")
        padrão_url = re.compile('(http(s)?://)?(www.)?bytebank.com(.br)?/cambio')
        match = padrão_url.match(self.url)
        if not match:
            raise ValueError('A URL é inválida')


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

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

    def get_valor_parametro(self, parametro_busca):
        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


    def converte_para_dolar(self,valor,cotacao):
        return (valor/cotacao)

    def converte_para_real(self,valor,cotacao):
        return  (valor*cotacao)

    def imprime_resultado(self,origem,destino):
        if origem == "real" and destino == "dolar":
            resultado = (round(resultado_conversao_para_dolar,2))
        elif origem== "dolar" and destino == "real":
            resultado = (round(resultado_conversao_para_real,2))
        return resultado









url = "bytebank.com/cambio?quantidade=100&moedaOrigem=dolar&moedaDestino=real"

extrator_url = ExtratorURL(url)
valor_quantidade = extrator_url.get_valor_parametro("quantidade")
origem = extrator_url.get_valor_parametro("moedaOrigem")
destino = extrator_url.get_valor_parametro("moedaDestino")
valor_dolar = 5.5
resultado_conversao_para_dolar = extrator_url.converte_para_dolar(float(valor_quantidade),float(valor_dolar))
resultado_conversao_para_real = extrator_url.converte_para_real(float(valor_quantidade),float(valor_dolar))
resultado = extrator_url.imprime_resultado(origem,destino)
print (resultado)
1 resposta
solução!

Olá João, tudo bem com você?

Meus parabéns pela resolução do desafio. Fico feliz que tenha compartilhado o seu código, ele atende bem o que foi proposto.

Quero aproveitar a oportunidade e deixar uma dica de boas práticas de programação. No Python por convenção a nomenclatura de variáveis não deve conter caracteres especiais, por exemplo, os caracteres latinos, como o c-cedilha (ç), o til (~) e etc, o único caractere especial permitido será o sublinhado (_).

Sendo assim recomendo que faça substituição da declaração das variáveis que fazem uso de caracteres especiais, por exemplo, troque cotação por cotacao.

A segunda parte da dica, será quanto a nomenclatura de variáveis com múltiplas palavras. No Python é adotado o padrão snake_case para nomearmos as variáveis, neste padrão temos todas as letras escritas em minúscula e suas palavras serão separadas com o uso do sublinhado (_).

Adotando esse padrão, substituiremos resultadoconversãoparadolar por resultado_conversao_para_dolar. Note que após a mudança no nome da variável ficou mais legível pela pessoa programadora.

Após realizar as modificações recomendadas acima, certifique-se de que todas as variáveis que precisam ser renomeadas passaram por essa renomeação, salve o arquivo e execute-o.

Para aprimorar ainda mais o seu aprendizado sobre as conversões de nomenclaturas no Python, recomendo a leitura do artigo abaixo, onde será abordado com mais detalhes sobre os demais padrões utilizados, por exemplo: PascalCase e SCREAMING_SNAKE_CASE.

Lembre-se que pode contar sempre com o fórum Alura, seja para compartilhar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software