Com base no código precedente, julgue o item que se segue, relativo à linguagem de programação Python, considerando que o ambiente em uso possua as bibliotecas necessárias instaladas.Ao se executar esse trecho de código, será exibido o resultado a seguir.['Alice', 'Aprovada']
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoE — Errado
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Python: compreensão de listas e condicionais
Gabarito: letra E (ERRADO). O código apresentado não exibe ['Alice', 'Aprovada'] como resultado, pois a compreensão de lista com if filtra os elementos que não atendem à condição, em vez de substituí-los por um valor alternativo. Para obter o resultado indicado, seria necessário usar uma expressão condicional (if/else) dentro da compreensão, e não apenas um filtro.
A questão envolve um conceito central da linguagem Python: a compreensão de listas (list comprehension). Trata-se de uma forma concisa de criar listas a partir de iteráveis, aplicando uma expressão a cada elemento e, opcionalmente, filtrando elementos com uma condição. A sintaxe básica é [expressão for item in iterável if condição]. A parte if condição atua como um filtro: apenas os elementos para os quais a condição é verdadeira são incluídos na nova lista. Os elementos que não atendem à condição são simplesmente descartados.
Para ilustrar, considere o código [x for x in range(10) if x % 2 == 0]. Este código gera uma lista com os números pares de 0 a 9: [0, 2, 4, 6, 8]. Os números ímpares são filtrados, ou seja, não aparecem na lista resultante. Se a intenção fosse substituir os números ímpares por algo (como 'ímpar'), seria necessário usar uma expressão condicional: ['ímpar' if x % 2 != 0 else x for x in range(10)]. Essa distinção é fundamental: o if sozinho filtra, enquanto o if/elsetransforma.
No contexto da questão, o código provavelmente tenta criar uma lista com nomes e seus respectivos status (aprovado/reprovado) com base em uma condição. No entanto, a forma como a compreensão de lista é escrita determina o resultado. Se a intenção é exibir ['Alice', 'Aprovada'], o código deve usar uma expressão condicional que mapeie cada elemento para o valor desejado. Se a compreensão usa apenas if (filtro), o resultado será uma lista contendo apenas os elementos que satisfazem a condição, não uma lista com valores transformados.
A pegadinha da banca está em confundir o papel do if na compreensão de listas. Muitos candidatos assumem que [expressão for item in iterável if condição] substitui os elementos que não atendem à condição por algo, quando na verdade eles são removidos. Para obter o resultado ['Alice', 'Aprovada'], seria necessário algo como [nome if condicao else 'Reprovada' for nome in nomes], que usa if/else para transformar cada elemento. A simples presença do if sem o else não produz o efeito de substituição.
Guarde essa distinção: if filtra, if/else transforma. É exatamente nesse ponto que a alternativa se divide.
1Sintaxe: [expr for item in iterável]
2Com if (filtro)
3Descarta elementos que não atendem
4Com if/else (transforma)
5Substitui cada elemento por valor
LEVEL · soulevel.com.br
Item — ❌ ERRADO ⟵ GABARITO
A afirmação de que o código exibirá ['Alice', 'Aprovada'] está errada. O erro está na interpretação do comportamento da compreensão de lista com if. Quando se usa [expressão for item in iterável if condição], o if atua como um filtro: apenas os elementos que satisfazem a condição são incluídos na lista resultante. Os elementos que não atendem à condição são descartados, não substituídos. Para obter o resultado ['Alice', 'Aprovada'], seria necessário usar uma expressão condicional (if/else) dentro da compreensão, como em [nome if aprovado else 'Reprovada' for nome, aprovado in dados]. A ausência do else faz com que a compreensão apenas filtre, não transforme. Portanto, o resultado real do código seria diferente do afirmado, tornando a assertiva incorreta.
PEGA ESSA DICA!
Para resolver questões sobre compreensão de listas, identifique se há if/else ou apenas if. Se houver apenas if, o resultado será uma lista filtrada (elementos que atendem à condição). Se houver if/else, o resultado será uma lista transformada (cada elemento é substituído por um valor). Essa distinção é a chave para evitar erros.