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

[Dúvida] Empaquei na questão 5

Essa é a questão onde meu código tem que retornar qual dos 3 produtos é o mais barato.

Tem um problema quando vou testar uma hipótese específica: O produto b é o mais barato, o produto c é o mais caro e o produto a é o do meio.

Ocorre que sempre sai que o produto a é o mais barato. Não estou conseguindo achar o erro de jeito nenhum.

Tentei testar também se isso acontecia com outro produto em vários cenários. Mas só nesse caso que o resultado sai errado.

Envio o print Iprint da minha resposta da questão 5 do aquecimento

2 respostas
solução!

Oi Filipe, isso está acontecendo por causa do comportamento do python quanto a expressão que vc colocou.

produto_a < (produto_b and produto_c)

É um comportamento do python que se vc coloca dois números com and entre eles, vai retornar o último. Então quando vc faz:

produto_b and produto_c

vc tem como resposta 7.0 e como 'produto_a' é menor do que 7, a expressão é verdadeira.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Imagino que o que vc queria fazer era isso:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Mas se vc tiver mais do que 3 valores, vai ficar difícil ficar montando expressões cada vez maiores para comparar. Vc pode adicionar todos os seus valores de produto dentro de uma lista ou tupla e usar as funções min ou max

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Segue o link da documentação das funções built-in do python, ali vc acha a definição do min e max (e várias outras) https://docs.python.org/3/library/functions.html

Valeu, muito obrigado. Ainda não tinha aprendido o min e o max, vai ser uma mão na roda daqui pra frente. Usei a solução a < b and a < c e deu certo aqui. Errei porque presumi que tudo que estivesse no parêntesis seria considerado.