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

Ordem decrescente.

Para o exercício 'Escreva um programa que leia três números e os exiba em ordem decrescente.' eu fiz da seguinte maneira:

prod_1 = float(input('Digite o valor do primeiro produto: '))

prod_2 = float(input('Digite o valor do segundo produto: '))
prod_3 = float(input('Digite o valor do terceiro produto: '))


if prod_1 >= prod_2 and prod_1 >= prod_3 and prod_2 >= prod_3:
    print(f'A ordem decrescente é', prod_1, prod_2, prod_3)
    
if prod_2 >= prod_1 and prod_2 >= prod_3 and prod_1 >= prod_3:
    print(f'A ordem decrescente é', prod_2, prod_3, prod_1)
    
if prod_3 >= prod_2 and prod_3 >= prod_1 and prod_2 >= prod_1:
    print(f'A ordem decrescente é', prod_3, prod_2, prod_1)

Mas, está dando o seguinte problema com string e float.

ValueError                                Traceback (most recent call last)
<ipython-input-30-2cf78b3de373> in <cell line: 1>()
----> 1 prod_1 = float(input('Digite o valor do primeiro produto: '))
      2 prod_2 = float(input('Digite o valor do segundo produto: '))
      3 prod_3 = float(input('Digite o valor do terceiro produto: '))
      4 if prod_1 >= prod_2 and prod_1 >= prod_3 and prod_2 >= prod_3:
      5     print(f'A ordem decrescente é', prod_1, prod_2, prod_3)**
    
    ValueError: could not convert string to float: '5 3 8'

Como resolver isso? Obrigada.

2 respostas
solução!

Oi, Martha, tudo bem?

O erro acontece porque você está digitando '5 3 8' quando o programa pede o valor do primeiro produto. O Python tenta converter essa string inteira para um valor do tipo float, mas não consegue porque a string contém mais de um número e espaços entre eles.

Uma solução seria digitar cada número separadamente quando o programa pedir. Por exemplo, quando o programa pedir 'Digite o valor do primeiro produto:', você digita '5'. Depois, quando pedir 'Digite o valor do segundo produto:', você digita '3', e assim por diante.

Além disso, há um erro ao digitar a sequência do segundo if onde ao imprimir a resolução da condição na tela, os valores aparecem como sendo o valor de prod_3 sendo maior que o de prod_1. Por exemplo, se tivermos uma situação onde prod_1 = 2, prod_2=3 e prod_3=1, o resultado seria 3, 1, 2. Ao corrigir esse detalhe, ficaria assim:

prod_1 = float(input('Digite o valor do primeiro produto: '))
prod_2 = float(input('Digite o valor do segundo produto: '))
prod_3 = float(input('Digite o valor do terceiro produto: '))

if prod_1 >= prod_2 and prod_1 >= prod_3 and prod_2 >= prod_3:
    print(f'A ordem decrescente é', prod_1, prod_2, prod_3)
    
if prod_2 >= prod_1 and prod_2 >= prod_3 and prod_1 >= prod_3:
    print(f'A ordem decrescente é', prod_2, prod_1, prod_3)
    
if prod_3 >= prod_2 and prod_3 >= prod_1 and prod_2 >= prod_1:
    print(f'A ordem decrescente é', prod_3, prod_2, prod_1)

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

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

Como eu costumo escrever os programas pedindo dados em sequencia, não reparei que neste pedia separadamente. Já fiz o conserto e está funcionando bem.

Muito obrigada!! Abração!