3
respostas

[Sugestão] Aula 03 - Desafio 12 - Exercício 5. Sugestão de correção da solução proposta.

Sugestão de correção da solução proposta na opinião do instrutor para o exercício 5. O código sugerido resulta em resposta errada caso o preço de dois produtos sejam iguais e menores do que o preço de um terceiro produto. O mesmo também acontece se o preço dos três produtos forem iguais. Com base no conhecimento adquirido até o momento nesta etapa do curso, uma solução seria o código a seguir:

.

É claro que ainda da pra melhorar o código pois ficou um pouco extenso. Esta é apenas uma sugestão.

3 respostas

Olá, Wallingson!

Agradeço pela sua sugestão de correção para o exercício 5 do Desafio 12. É muito bom ver que você está aplicando o conhecimento adquirido e pensando em maneiras de melhorar o código. A solução que você propôs realmente cobre o caso em que os preços dos produtos são iguais, seja entre dois produtos ou entre os três.

No entanto, como você mesmo mencionou, o código pode ficar um pouco extenso ao cobrir todas as possibilidades. Uma forma de simplificar seria utilizando listas e a função min() para encontrar o menor preço, e em seguida verificar a posição desse preço na lista para determinar qual produto é o mais barato. Aqui está um exemplo de como isso poderia ser feito:

# Solicita os preços dos produtos e armazena em uma lista
precos = [float(input("Digite o preço do primeiro produto: ")),
          float(input("Digite o preço do segundo produto: ")),
          float(input("Digite o preço do terceiro produto: "))]

# Encontra o menor preço utilizando a função min()
menor_preco = min(precos)

# Verifica a posição do menor preço na lista para identificar o produto mais barato
if precos.count(menor_preco) > 1:
    print("Há produtos com o mesmo preço mais barato!")
else:
    indice_menor_preco = precos.index(menor_preco)
    print(f"O produto {indice_menor_preco + 1} é o mais barato!")

Este código é mais curto e também trata o caso de preços iguais, informando se há mais de um produto com o mesmo preço mais barato. Espero que essa sugestão também contribua para o aprendizado e aprimoramento do código na resolução de problemas.

Eu vou passar o seu feedback para a equipe de conteúdo para analisarem e corrigirem

Espero ter ajudado e bons estudos!

Oi Renan! Obrigada pela sugestão de código. Assim que eu terminei de ler a proposta de solução do exercício, percebi que continha esse erro, rs...

Como poderíamos fazer pra indicar que, além de ter outro produto que também é classificado como o mais barato, identificar qual produto é esse? Somente descrevendo todas as possibilidades, como o colega acima sugeriu?

Fico no aguardo.

Abraços

Oii, Luiza.

Acho que entendi. Se quisermos identificar qual produto é o mais barato quando há mais de um com o mesmo preço, podemos fazer algumas alterações no código para incluir essa informação. Uma abordagem seria armazenar os índices dos produtos com o preço mais baixo em uma lista e, em seguida, imprimir essa lista no final. Aqui está uma sugestão de como isso poderia ser feito:

# Solicita os preços dos produtos e armazena em uma lista
precos = [float(input("Digite o preço do primeiro produto: ")),
          float(input("Digite o preço do segundo produto: ")),
          float(input("Digite o preço do terceiro produto: "))]

# Encontra o menor preço utilizando a função min()
menor_preco = min(precos)

# Encontra os índices dos produtos com o preço mais baixo
indices_menor_preco = [i+1 for i, preco in enumerate(precos) if preco == menor_preco]

# Verifica a quantidade de produtos com o mesmo preço mais baixo
if len(indices_menor_preco) > 1:
    print(f"Há produtos com o mesmo preço mais barato! Produtos: {', '.join(map(str, indices_menor_preco))}")
else:
    print(f"O produto {indices_menor_preco[0]} é o mais barato!")

Nesta versão, indices_menor_preco é uma lista que armazena os índices dos produtos com o preço mais baixo. Se houver mais de um produto com o mesmo preço mais baixo, o código imprime todos esses produtos. Espero que esta sugestão ajude a melhorar ainda mais a solução do exercício.

Se tiver mais alguma dúvida ou sugestão, estou à disposição!

Abraços!