GeraProva GeraProva Provas com IA para professores do Brasil
Computação1ª sérieBNCC EM13CO02Média⏱ medio

Implemente em Python uma função que recebe uma lista de inteiros e retorna, na ordem da primeira ocorrência…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EM13CO02

Explorar e construir a solução de problemas por meio de refinamentos, utilizando diversos níveis de abstração desde a especificação até a implementação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Implemente em Python uma função que recebe uma lista de inteiros e retorna, na ordem da primeira ocorrência, os elementos que aparecem mais de uma vez, sem duplicatas.

  1. A) def repetidos(lst): return list(set(lst))
  2. B) def repetidos(lst): return list(dict.fromkeys(lst))
  3. C) def repetidos(lst): return [x for x in lst if lst.count(x) == 1]
  4. D) def repetidos(lst): return list(dict.fromkeys([x for x in lst if lst.count(x)>1]))
  5. E) def repetidos(lst): return lst[::-1]

✅ Resposta correta: alternativa D

Resolução passo a passo

  1. Queremos apenas os elementos que aparecem mais de uma vez (count maior que 1), sem repetições e na ordem da primeira ocorrência. Passo 2: A alternativa D faz isso em duas etapas. Primeiro, a list comprehension [x for x in lst if lst.count(x) > 1] mantém as ocorrências de valores repetidos, na ordem original. Passo 3: Depois, dict.fromkeys(...) cria um dicionário cujas chaves entram na ordem da primeira aparição e não aceitam duplicatas; list(...) converte essas chaves em lista. Assim o resultado não tem repetições e preserva a ordem. Exemplo: para [3, 1, 3, 2, 1, 5], a primeira etapa gera [3, 1, 3, 1] e a segunda gera [3, 1]. Passo 4: Por que as outras estão erradas: A usa set, que perde a ordem e inclui elementos que aparecem uma única vez. B remove duplicatas, mas não filtra, então mantém elementos únicos como o 2 e o 5. C seleciona exatamente os elementos que aparecem uma só vez, o oposto do pedido. E apenas inverte a lista, sem filtrar nada. Portanto, o gabarito D está correto.

💡 Dica: Utilize um dicionário para contar as ocorrências dos elementos.

Alternativa por alternativa

A Erradaerro: Conceitual

Acredita que usar set resolve o problema, confundindo remover duplicatas com selecionar apenas os elementos que se repetem. Também não percebe que set não preserva a ordem da primeira ocorrência.

B Erradaerro: Interpretação

Interpreta 'sem duplicatas' como o único critério da função e esquece que é preciso retornar apenas os elementos que aparecem mais de uma vez. Assim, mantém também os elementos que aparecem uma só vez.

C Erradaerro: Atençãoa que mais engana

Inverte a condição de filtragem e seleciona os elementos cuja contagem é exatamente 1, quando o pedido era o contrário. Também retornaria duplicatas caso um valor aparecesse várias vezes.

Por que engana: O aluno pode confundir a contagem de elementos e acabar retornando elementos únicos em vez dos repetidos.

D Correta

A compreensão filtra elementos com contagem>1; dict.fromkeys preserva a primeira ocorrência e remove duplicatas; list converte para lista.

E Erradaerro: Interpretação

Não compreende o enunciado e supõe que basta inverter a lista para obter os repetidos. A operação de fatiamento lst[::-1] não filtra nem remove elementos.

Raio-X da questão

Dificuldade Média
Bloom Analisar
Leitura medio
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade unica
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ direta🧩 desafio
🎯 Conceito central

funções em Python

📌 Objetivo

fixacao

🧱 Pré-requisitos

listas em Python · contagem de elementos

📚 Reveja

Revisar como manipular listas e dicionários em Python.

⚠️ Erro mais comum

O aluno pode confundir a contagem de elementos e acabar retornando elementos únicos em vez dos repetidos.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.