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

[Bug] Problema com a lista de cores maior do que o esperado

Acredito haver um erro no código do exercício.

cores = []
for i in frutas.index:
  if frutas.loc[i,"quantidade"] >= 3000:
    cores.append(AMARELO)
  if frutas.loc[i,"quantidade"] < 2000:
    cores.append(VERMELHO)
  else:
    cores.append(AMARELO_CLARO)

Da forma como a solução foi escrita, o código vai anexar duas cores na lista caso os valores sejam maiores ou iguais a 3000. Imagino que o segundo if na verdade deveria ser um elif

1 resposta
solução!

Parece que o código tem um problema no controle de fluxo das condições if e else. Especificamente, o bloco de if para verificar quando quantidade é menor que 2000 está sendo executado independentemente de outras condições, o que pode gerar resultados inesperados, como adicionar a cor AMARELO várias vezes, ou adicionar a cor AMARELO_CLARO mesmo quando quantidade é maior ou igual a 2000, mas menor que 3000.

Problema: O primeiro if verifica se a quantidade é maior ou igual a 3000 e, se for, adiciona a cor AMARELO.

O segundo if verifica se a quantidade é menor que 2000 e, se for, adiciona a cor VERMELHO. Este segundo if será executado independentemente da primeira condição, o que pode causar conflitos.

O else será executado quando quantidade for maior ou igual a 2000, mas nunca será executado quando a quantidade for menor que 2000.

Solução: Você precisa ajustar a lógica para garantir que as condições sejam mutuamente exclusivas e não haja sobreposição no uso das cores. Isso pode ser feito utilizando uma estrutura if-elif-else, onde as condições são verificadas de forma hierárquica e somente uma delas será executada.

Código corrigido:

cores = []
for i in frutas.index:
    if frutas.loc[i, "quantidade"] >= 3000:
        cores.append(AMARELO)
    elif frutas.loc[i, "quantidade"] < 2000:
        cores.append(VERMELHO)
    else:
        cores.append(AMARELO_CLARO)