Giter Club home page Giter Club logo

pf_gifor's Introduction

PF/GIFOR

Esse repositório tem como objetivo guardar minhas soluções para participação do processo seletivo para estágio na Polícia Federal no Grupo de Integração Forense da Polícia Federal, assim como, explicar como se deu a solução.

Processo Seletivo

A primeira etapa consiste na solução de dois problemas em Python.

Problema 1

Dado uma lista de dicionários (chave/valor) Python verifique se existe a chave 'nome', e caso exista salve o valor dessa chave em uma segunda lista, de modo que não haja repetição de valores na segunda lista.

Sobre a Solução

Devido a natureza do problema, decidi por implementar uma função que recebe uma lista de dicionários como argumento e que retorna uma lista contendo os nomes sem repetição. Essa função pecorre a lista procurando a chave 'nome' nos dicionários. Quando é encontrada, o valor corresponde é adicionado a uma nova lista. Para manter a lista sem valores repetidos eu uso do artifício da classe set, que possiblilita a construção de uma coleção com elementos únicos.

Para mais detalhes a respeito da implementação do código acesse a solução.

Problema 2

Dado um arquivo csv com delimitador ';' e com o seguinte cabeçalho: id;nome;telefone;idade. Retorne uma lista com os registros ordenados por nome. Exemplo de arquivo:

Id;nome;telefone;idade
1;João;43383832;28
2;Maria;43839322;32
.
.
.
N;Zzzz;99999999;12

Para esse problema eu descidi por fazer duas implementação. A duas seguem a mesma linha de raciocínio e paradigma, orientação a objetos. Entretanto, diferem-se na função que lê do arquivo csv. Na primeira eu utilizo apenas a API padrão, enquanto na segunda solução também utilizo a biblioteca pandas para auxiliar na manipulação do arquivo csv.

Para modelar os registros criei uma classe chamada Pessoa, assim posso transformar cada linha de valores do arquivo em objeto contendo os campos id, nome, telefone e idade.

Após ler do arquivo e transformar o registro em uma lista de objetos(pessoas), chamo o método sort passando como chave o atributo nome.

Para mais detalhes a respeito da implementação dos códigos acesse as soluções:

Execução do Código

Para facilitar a execução e não ser necessária a preparação do ambiente eu criei um notebook online utilizando a ferramenta Colab.

A execução é bem simples:

Observações

  • versão do Python: Python 3.5.2;
  • versão do pandas: pandas 2.8.1;
  • instalação da biblioteca pandas para execução local;
  • A solução não contempla o tratamento de exceções caso o usuário passar um path inexistente ou se o mesmo não conter dados corentes com o formato csv válido.

Autor

Lieverton Santos Silva

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.