5
respostas

=dolar

Boa tarde!

O meu código está identico ao seu. Porém, quando vou rodar ele aparece: =dolar

Não sei o que está acontecendo.

obs: Estou com a última versão do python, no anaconda

5 respostas

Samuel, tudo bem? Por via das dúvidas vc pode compartilhar seu código aqui? Para ficar mais legível use o botão "<> INSERIR CÓDIGO" que fica no início da caixa de texto.

Beleza!!

O código abaixo pertence ao arquivo "main", de acordo com o curso sobre manipulação se strings, mais específicamente, aula 2 --> Construindo mais métodos...


import import_ipynb
import manipulacao_string
from manipulacao_string import Extrato_argumentos_url

url = "moedaorigem=real&moedadestino=dolar"

argumentos_url = Extrato_argumentos_url(url)

moeda_origem, moeda_dest = argumentos_url.extrai_argumentos()

print(moeda_destino,moeda_origem)

Como essa aula tem dois arquivos operando, o outro cuja importação foi chamada no código acima ("manipulacao_string"), é:

class Extrato_argumentos_url:
    def __init__(self, url):
        if self.url_valida(url):
            self.url = url
        else:
            raise LookupError("URL Invalida!!")

    @staticmethod        
    def url_valida(url):
        if url:
            return True
        else:
            return False

    def extrai_argumentos(self):
        indice_inicial_moeda_dest = self.url.find("=",15) +1
        indice_inicial_moeda_origem = self.url.find("=") +1
        indice_final_moeda_origem = self.url.find("&")



        moeda_origem = self.url[indice_inicial_moeda_origem:indice_final_moeda_origem]
        moeda_destino = self.url[indice_inicial_moeda_destino:]

        return moeda_origem, moeda_destino

Fui rodar o código hoje cedo, apareceu assim no arquivo "main": indice_inicial_moeda_orgiem is not defined

Consegui, ja!!

Obrigado

Boa Samuel, parabéns!

Olá Samuel. Analisando o código para aparecer o =dollar é quando não somamos + 1 no resultado da função find. Esse +1 tem a função de andar mais uma posição dessa maneira pulando a posição do =.

    indice_inicial_moeda_dest = self.url.find("=",15) +1

Outra questão que vi no manipulacao_string.py é o nome da variável moeda_destino que foi declarada no trecho abaixo.

        indice_inicial_moeda_dest = self.url.find("=",15) +1
        indice_inicial_moeda_origem = self.url.find("=") +1
        indice_final_moeda_origem = self.url.find("&")

Quando ela é referenciada nesse trecho ela aprece com um nome diferente indice_inicial_moeda_destino

        moeda_origem = self.url[indice_inicial_moeda_origem:indice_final_moeda_origem]
        moeda_destino = self.url[indice_inicial_moeda_destino:]

O mesmo acontece no arquivo main.py com a variável moeda_dest que foi criada no trecho abaixo.

moeda_origem, moeda_dest = argumentos_url.extrai_argumentos()

Quando utilizada no trecho abaixo é referenciada com o nome moeda_destino.

print(moeda_destino,moeda_origem)

Em ambos os casos de nome de variáveis diferentes a correção é apenas manter o mesmo nome nos dois trechos do código.

Bons estudos.