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

Problema com concatenação

Olá.

Alguem pode me ajudar a identificar o que tem de errado aqui:

def conversao_moeda(self):
    origem = extrator_url.get_valor_parametro("moedaOrigem")
    destino = extrator_url.get_valor_parametro("moedaDestino")
    valor = float(extrator_url.get_valor_parametro("quantidade"))
    taxa = 5.50

    convertido = round((valor / taxa), 2) if origem == "real" else round((valor * taxa),2)

    return "Conversão de " + origem + " para " + destino + " -> " + "R$" if origem == "dolar" else "$ " + str(convertido)

    url = 'bytebank.com/cambio?quantidade=100&moedaOrigem=dolar&moedaDestino=real'
    extrator_url = ExtratorURL(url)
    print(extrator_url.conversao_moeda())

`

Resposta: Conversão de dolar para real -> R$

Mas quando eu coloco str("R$" if origem == "dolar" else "$ ") da certo

Resposta: Conversão de dolar para real -> R$550.0

Porque isso acontece se origem e dolar já são strings??

2 respostas
solução!

Não é questão de string str(...) e sim do funcionamento do if em linha. Caso você coloque só parênteses ali também vai funcionar. O que o if está fazendo é retornar

"Conversão de " + origem + " para " + destino + " -> " + "R$"

se origem == "dolar". Se não for retorna

"$ " + str(convertido)

Esse if em linha fica mais enxuto, mas tem que tomar cuidado. Usando o if normal fica assim:

from extrator_url import ExtratorURL


def conversao_moeda():
    url = 'bytebank.com/cambio?quantidade=100&moedaOrigem=dolar&moedaDestino=real'
    extrator = ExtratorURL(url)
    origem = extrator.get_valor_parametro("moedaOrigem")
    destino = extrator.get_valor_parametro("moedaDestino")
    valor = float(extrator.get_valor_parametro("quantidade"))
    taxa = 5.50

    convertido = round((valor / taxa), 2) if origem == "real" else round((valor * taxa), 2)

    if origem == "dolar":
        return "Conversão de " + origem + " para " + destino + " -> " + "R$" + str(convertido)
    else:
        return "Conversão de " + origem + " para " + destino + " -> "  + "$" + str(convertido)


print(conversao_moeda())

Muito obrigado Matheus!!!