Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Fiz diferente, de uma forma generalista

url = "https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100"
print(url)

posicao_do_separador = 0
for i in url:
    if i == '?':
        break
    posicao_do_separador += 1
print(posicao_do_separador)
print(url[posicao_do_separador] + '\n')

url_base = url[:posicao_do_separador]
print(url_base)

url_parametros = url[(posicao_do_separador + 1):]
print(url_parametros)

Eu fiz de uma maneira que ifcasse geral para todas as URL's. Alguma sugestão? Fiz de um bom modo?

2 respostas
solução!

Oiii Akhenaton, como você está?

Parabéns por ir além do que foi proposto na aula. A forma como você realizou a implementação cumpre o resultado e evita codificar utilizando o número de índices fixos.

Uma outra forma de separarmos as duas partes da URL de forma menos verbosa, é utilizando o método split(), que por padrão recebe um caractere separador e divide a string em uma lista, com base no que foi passado por parâmetro. Exemplo:

url = "https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100"
url_base, url_parametros  = url.split("?")
print(url_base)
print(url_parametros)

Resultado:

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

Onde o elemento [0] da lista, a parte esquerda da URL, é armazenado na variável url_base, e o elemento [1], a parte direita da URL, é armazenada na variável url_parametros.

Já uma forma de saber a posição do separador sem necessitar de um laço de repetição, é através da função find(), como mostro abaixo:

posicao_do_separador = url.find("?")

Vale ressaltar que tanto o split(), quanto o find() funcionarão para a primeira ocorrência do caractere “?”, em casos de uma string com mais ocorrências do ponto de interrogação, teríamos que modificar a abordagem.

Caso queira se aprofundar em relação aos métodos find e split, recomendo os seguintes artigos:

Os artigos estão em inglês, caso tenha dificuldade com esse idioma, recomendo que utilize o tradutor do próprio navegador.

Em caso de dúvidas, me coloco à disposição.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Outra forma que facilita é utilizar o split e realizar um for .

url = "https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100"
indice_base = url.find('?')
url_base = url[:indice_base]

url_parametros = url[indice_base+1:]
print(url_parametros)

url_tamanho = url_parametros.split("&")
print(url_tamanho)

for parametro in url_tamanho:
    print(parametro)
    if parametro.find('moedaOrigem=') == 0:
        url_moeda_origem_list = parametro.split("=")
        url_moeda_origem = url_moeda_origem_list[1]
        print(url_moeda_origem)
    elif parametro.find('moedaDestino=') == 0:
        url_moeda_destino_list = parametro.split("=")
        url_moeda_destino = url_moeda_destino_list[1]
        print(url_moeda_destino)
    elif parametro.find('quantidade=') == 0:
        url_quantidade_list = parametro.split("=")
        url_quantidade = url_quantidade_list[1]
        print(url_quantidade)

Resultado

https://bytebank.com/cambio?moedaOrigem=real&moedaDestino=dolar&quantidade=100
https://bytebank.com/cambio
moedaOrigem=real&moedaDestino=dolar&quantidade=100
['moedaOrigem=real', 'moedaDestino=dolar', 'quantidade=100']
moedaOrigem=real
real
moedaDestino=dolar
dolar
quantidade=100
100