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}")