Exercícios Resolvidos de Funções

Ver Teoria

Enunciado

Escreva uma funcão reps em Python que recebe uma lista e retorna uma outra lista contendo apenas os elementos que aparecem duas ou mais vezes na lista de entrada.

Exemplo:

Passo 1

Beleza, o professor MANDOU a gente fazer uma função chamada reps que RETORNA (e não exibe) uma lista que só tenha os números repetidos na primeira. Vamos começar criando a função.

Agora, precisamos pensar sobre como descobrir se um item se repete ou não. Ok, existe uma função nativa de Python que faz isso, mas com certeza seu professor não quer que você use, ok?! A ideia é usar repetições... Então, vamo lá! Vamos começar criando a lista que a gente vai retornar depois.

Passo 2

Beleza, agora precisamos lidar com a lógica de pegar duplicatas. Uma ideia é a gente iterar por toda lista que recebemos. Quando a gente usa a função index() pra perguntar o índice de um elemento em uma lista, recebemos sua primeira aparição. A gente pode usar isso! Caso o index atual seja diferente da primeira aparição, então é uma duplicata.

E se item for uma duplicata, então a gente adiciona ele na lista de duplicados!

Passo 3

Parece tudo lindo, mas esse código ainda tem um problema. Se existir um mais de uma repetição, ele vai adicionar duas vezes à lista de retorno, e isso não é o que a gente quer.

O ideal é que a gente não tenha itens repetidos na resposta. Pra isso, a gente precisa checar se o item já existe na lista duplicados antes de adicionar!

Agora sim, deu bom! Vamos testar com os dados que o professor passou.

Passo 4

Ops! Apesar da lógica estar funcionando, o resultado não está igual ao do professor. No exemplo, a lista retornada está ordenada. Ele não diz que temos que ordenar também, mas é sempre bom deixar igualzinho! Pra isso, vamos retornar a versão sorted() da nossa lista.

Agora sim! Ficou perfeito!! Mas a gente não pode esquecer de tirar do código o que não foi pedido. O enunciado pede a função, então vamos deixar só a função.

Prontinho! Essa é a nossa resposta. Te espero no próximo exercício!

Resposta