Boa tarde à todos.
Estou construindo (ou pelo menos tentando) um sistema que calcula o melhor custo benefício na compra/comparação de cerveja. basicamente o sistema pergunta quantas cervejas o usuário quer comparar, qual o tamanho da cerveja e o valor dessa cerveja.
Hoje o sistema devolve qual a cerveja de melhor custo benefício. Porém estou com um problema e não estou conseguindo avançar na solução dele. O problema é o seguinte:
- Ao preencher duas ou mais cervejas do mesmo tamanho e valor o sistema sempre está informando a primeira cerveja preenchida como melhor custo benefício. Não estou conseguindo tratar isso e informar que as cervejas possuem o mesmo custo benefício.
Segue o código como está hoje:
class Cerveja:
# Função construtora do objeto Cerveja
def __init__(self, nome, quantidade_ml, valor):
self.nome = nome
self.quantidade_ml = quantidade_ml
self.valor = valor
# Função que calcula o custo por litro
def calcular_custo_litro(self):
quantidade_litros = self.quantidade_ml / 1000
melhor_custo = self.valor / quantidade_litros
return melhor_custo
# Função para obter o melhor custo
def obter_cerveja_melhor_custo(cervejas):
melhor_custo = float('inf')
cerveja_melhor_custo = None
for cerveja in cervejas:
custo_litro = cerveja.calcular_custo_litro()
if custo_litro < melhor_custo:
melhor_custo = custo_litro
cerveja_melhor_custo = cerveja
return cerveja_melhor_custo
# Função auxiliar para ler a entrada do usuário
def ler_entrada():
quantidade_cervejas = int(input("Digite a quantidade de cervejas: "))
cervejas = []
for i in range(quantidade_cervejas):
nome = input(f"Digite o nome da cerveja {i + 1}: ")
quantidade_ml = float(input(f"Digite a quantidade em mililitros da cerveja {i + 1}: "))
valor = float(input(f"Digite o valor da cerveja {i + 1}: "))
cerveja = Cerveja(nome, quantidade_ml, valor)
cervejas.append(cerveja)
return cervejas
# Função principal
def main():
cervejas = Cerveja.ler_entrada()
cerveja_melhor_custo = Cerveja.obter_cerveja_melhor_custo(cervejas)
if cerveja_melhor_custo is None:
print("Não há cervejas cadastradas.")
else:
print(f"A cerveja com melhor custo por litro é {cerveja_melhor_custo.nome} com o custo de litro de R$ {cerveja_melhor_custo.valor}.")
# Execução da função principal
if __name__ == '__main__':
main()
Toda e qualquer sugestão de melhoria, além da ajuda no problema acima, será muito bem vinda.
Obrigado pela atenção.