1
resposta

usando metodo ROUND

Olá,

Quando fiz a resolução do desafio reparei que após a conversão de valores fica um numero quebrado muito grande tipo 18.888888888...

Quando fui tentar usar o método round direto na conversão gerou um erro:

if moeda_origem == "real" and moeda_destino =="dolar":
    valor_convercao = int(quantidade) / valor_dolar
    print(f"O valor de R$ {quantidade} reais é igual a $ {valor_convercao.round(2)} dolares")
elif moeda_origem == "dolar" and moeda_destino =="real":
    valor_convercao = int(quantidade) * valor_dolar
    print(f'O valor de $ {quantidade} dolares é igual a {valor_convercao.round(2)} reais')
else:
    (f'Cambio de {moeda_origem} para {moeda_destino} não está disponivel')

AttributeError: 'float' object has no attribute 'round'

A minha dúvida é como eu implementaria um novo método para sanar esse erro. tentei algo assim:

 def __round__(self):
     return round(self)

, mas acho que não é exatamente isso

1 resposta

Olá Vitor, tudo bem com você?

Para esse exemplo podemos fazer o uso da formatação de string, através dela podemos limitar a quantidade de casas decimais que serão impressas. Como apresentado abaixo:

print(f"O valor de R$ {quantidade} reais é igual a $ {valor_convercao:.2f} dolares")

Em valor_convercao:.2f temos que, o valor da conversão deve ser impresso com dois números na casa decimal (:.2) e que ele será do tipo float(f).

Adicionando a formatação nas demais partes do código temos:

if moeda_origem == "real" and moeda_destino =="dolar":
    valor_convercao = int(quantidade) / valor_dolar
    print(f"O valor de R$ {quantidade} reais é igual a $ {valor_convercao:.2f} dolares")
elif moeda_origem == "dolar" and moeda_destino =="real":
    valor_convercao = int(quantidade) * valor_dolar
    print(f'O valor de $ {quantidade} dolares é igual a {valor_convercao:.2f} reais')
else:
    print(f'Cambio de {moeda_origem} para {moeda_destino} não está disponivel')

Resultado

O valor de R$ 100 reais é igual a $ 18.18 dolares

Uma observação quanto ao laço de validação else, será necessário adicionar a função print() para que seja impresso a mensagem corretamente.

Para saber um pouco mais sobre a formatação de string recomendo a leitura do seguinte artigo que irá abordar com mais detalhes sobre as possibilidades de formatação de string:

O artigo está em inglês caso tenha dificuldades com o idioma, recomendo o uso do tradutor que existe no navegador.

Continue assim sempre usando o fórum, seja para compartilhar conhecimentos ou para tirar dúvidas.

Fico à disposição.

Abraços e bons estudos!

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