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

Desafio Concluído (não sei se está correto)

import re


class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        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("Está escrito uma URL vazia.")

        padrao_url = re.compile("(http(s)?://)?(www.)?bytebank.com(.br)?/cambio")#https://bytebank.com/cambio
        match = padrao_url.match(url)
        if not match:
            raise ValueError("URL inválida.")

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

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

    def get_valor_parametro(self, parametros_busca):
        indice_parametros = self.get_url_parametro().find(parametros_busca)
        indice_valor = indice_parametros + len(parametros_busca) + 1
        indice_e_comercial = self.get_url_parametro().find('&', indice_valor)
        if indice_e_comercial == -1:
            valor = self.get_url_parametro()[indice_valor:]
        else:
            valor = self.get_url_parametro()[indice_valor:indice_e_comercial]
        return valor

    def quantidade_para_float(self, quantidade_para_float):
        return float(quantidade_para_float)


url = "bytebank.com/cambio?quantidade=1&moedaOrigem=dolar=&moedaDestino=real"
extrator_url = ExtratorURL(url)

valor_dolar = 5.50
moeda_origem = extrator_url.get_valor_parametro("moedaOrigem")
moeda_destino = extrator_url.get_valor_parametro("moedaDestino")
quantidade = extrator_url.get_valor_parametro("quantidade")
quantidade_float = extrator_url.quantidade_para_float(quantidade)
valor_moeda_destino = valor_dolar * quantidade_float
print(f"{quantidade} {moeda_origem} {valor_moeda_destino:.2f} {moeda_destino}")
1 resposta
solução!

Ótimo trabalho, Heldem!

Consegui rodar seu projeto e parece correto! Só precisei fazer uma pequena alteração no método get_url_base:

url_base = self.url.base[:indice_interrogacao]
# Alterei para
url_base = self.url[:indice_interrogacao]

Sempre que precisar, você também pode consultar a solução no GitHub! https://github.com/alura-cursos/manipulacao-strings-alura/blob/aula-5/extrator_url.py

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