Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

O 'menor_valor' não consegue receber o valor do meu menor lance

Fiz os lances de 100.0 e 150.0, porém, quando faço o print

print(f"O menor lance foi de {avaliador.menor_lance} e o maior lance foi de {avaliador.maior_lance}")

o resultado é 'O menor lance foi de 1.7976931348623157e+308 e o maior lance foi de 150.0'

Sendo assim, pedi os valores de sys.float_info para avaliar

print(sys.float_info.min)
print(sys.float_info.max)

sys.float_info.min = 2.2250738585072014e-308

sys.float_info.max = 1.7976931348623157e+308

Com estes valores, o lance de 100.0 realmente não entra como o 'menor_lance', o que há de errado?

em dominio.py

class Avaliador:
    def __init__(self):
        self.maior_lance = sys.float_info.min
        self.menor_lance = sys.float_info.max

    def avalia(self, leilao: Leilao):
        for lance in leilao.lances:
            if lance.valor > self.maior_lance:
                self.maior_lance = lance.valor
            elif lance.valor < self.menor_lance:
                self.menor_lance = lance.valor

em 'principal.py'

import sys
from dominio import Usuario, Lance, Leilao, Avaliador

gui = Usuario("Gui")
yuri = Usuario("Yuri")

lance_gui = Lance(gui, 100.0)
lance_yuri = Lance(yuri, 150.0)

leilao = Leilao("Celular")

leilao.lances.append(lance_gui)
leilao.lances.append(lance_yuri)

for lance in leilao.lances:
    print(f"O usuário {lance.usuario.nome} eu um lance de {lance.valor}.")

avaliador = Avaliador()
avaliador.avalia(leilao)
print(sys.float_info.min)
print(sys.float_info.max)
print(f"O menor lance foi de {avaliador.menor_lance} e o maior lance foi de {avaliador.maior_lance}")
1 resposta
solução!

Me precipitei ! A solução está na sequência dos vídeos.. xD

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software