Quando quero imprimir o menor lance, ele dá problema e realiza alguma operação desconhecida com o valor inserido. Seguem os códigos:
Domínio:
import sys
class Usuario:
def __init__(self, nome):
self.__nome = nome
@property
def nome(self):
return self.__nome
class Lance:
def __init__(self, usuario, valor):
self.usuario = usuario
self.valor = valor
class Leilao:
def __init__(self, descricao):
self.descricao = descricao
self.__lances = []
@property
def lances(self):
return self.__lances
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
Principal:
from src.leilao.dominio import Usuario, Lance, Leilao, Avaliador
carlos = Usuario("Carlos")
yuri = Usuario("Yuri")
lance_do_carlos = Lance(carlos, 100.0)
lance_do_yuri = Lance(yuri, 160.0)
leilao = Leilao("Celular")
leilao.lances.append(lance_do_carlos)
leilao.lances.append(lance_do_yuri)
for lance in leilao.lances:
print(f"O usuário {lance.usuario.nome} deu um lance de R${lance.valor}")
avaliador = Avaliador()
avaliador.avalia(leilao)
print(f"O menor lance foi de {avaliador.menor_lance} e o maior lance foi de {avaliador.maior_lance}")
Na execução da última linha, o console mostra:
O menor lance foi de 1.7976931348623157e+308 e o maior lance foi de 160.0
Mas se troco o valor do lance_do_carlos e deixo ele o maior lance, não dá problema:
"C:\Users\Windows 10\AppData\Local\Programs\Python\Python37-32\python.exe" "C:/Users/Windows 10/PycharmProjects/testes_automatizados/src/leilao/principal.py"
O usuário Carlos deu um lance de R$170.0
O usuário Yuri deu um lance de R$160.0
O menor lance foi de 160.0 e o maior lance foi de 170.0
Process finished with exit code 0
Alguém sabe por que esse problema ocorre e como resolvê-lo?
Grato.