1
resposta

Maior e Menor valor com bug

Meu codigo esta retornando bug. tanto no valor menor como no maior, nao encontro o bug, poderiam me ajudar? Retorna: Maior lance: 1.7976931348623157e+308 - Menor lance: 2.2250738585072014e-308

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.max
        self.menor_lance = sys.float_info.min

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

Oi Natália, como você está? Espero que esteja bem ^-^

Acredito que o erro seja porque você está atribuindo o sys.float_info.max a variável maior_lance e o sys.float_info.min ao menor_lance, porém a ideia é que o valor do maior_lance seja um valor muito baixo para que qualquer lance que o usuário fizer seja maior do que ele e dessa forma, possa ser atribuído a variável. E de forma análoga, o menor_lance tem que ser um valor muito alto para que qualquer lance que for menor que esse valor possa ser atribuído a variável.

Sendo assim, modifique de:

self.maior_lance = sys.float_info.max
self.menor_lance = sys.float_info.min

Para:

 self.maior_lance = sys.float_info.min
 self.menor_lance = sys.float_info.max

Após a modificação, tente executar o código novamente.

Qualquer dúvida estou por aqui.

Abraços e bons estudos!