Postagens

Mostrando postagens de 2020

Programação Orientada à Objetos (POO) em Python

Classes Para criar uma classe: # define que é uma classe e o nome dela class Nome_Classe: # construtor da classe def __init__(self, parametro1, parametro2): self.atributo1 = ‘X’ self.atributo2 = 10 self.atributo3 = parametro1 self.atributo4 = parametro2 self.atributo5 = self.calcula_atributo5() def calcula_atributo5(self): return 1 + 2 Caso você não esteja familiarizado com o termo, um construtor é um método que é executado sempre que um novo objeto daquela classe é criado. Além de servir para inicializar os atributos, ele também é usado para garantir que determinados parâmetros obrigatórios sejam necessariamente informados para que a classe seja criada. Note que nos dois métodos, o primeiro argumento é o self. Ele é um parâmetro obrigatório em todos os métodos das classes que é utilizado para acessar atributos e métodos da instância da própria classe. Para instanciar uma classe: nome_classe = Nome_Classe(parametro1, parametro2) print(nome_classe.atributo1) # ...

Algoritmo Genético

Definição Um Algoritmo Genético é um algoritmo que busca encontrar as melhores características para uma dada população dado um objetivo, simulando o processo de seleção natural, onde cada geração de uma dada população é avaliada considerando um valor de fitness e o s "melhores" dessa geração tem maior probabilidade de passar suas características para a próxima geração. Sempre que ocorre uma mudança de geração, as características dos indivíduos tem uma probabilidade de sofrer mutação . A mutação é importante, pois permite que a população tenha diversidade. Em resumo, para que um algoritmo seja considerado um algoritmo genético, ele precisa obedecer 3 princípios: Hereditariedade : as características de uma geração precisam ser passadas para a próxima geração. Variação : os indivíduos de uma mesma geração precisam ter características diferentes. Seleção : os “melhores” indivíduos de uma geração devem ter maior probabilidade de passar suas características para a próxima geração. ...

Spark

Como é necessário um cluster de máquinas para armazenar os dados, é necessário ter uma forma de processar esses dados nas diversas máquinas. Para isso, existe o Spark: ele permite a execução de consultas e aplicação de algoritmos de ML nessas diversas máquinas de forma simplificada 

Hadoop

Quando falamos de BigData, estamos falando e uma quantidade enorme de dados. Isso faz com que uma única máquina não seja capaz de armazenar todos esses dados, sendo necessário um cluster de máquinas. Para gerenciar esse cluster de máquina, existe o Hadoop, que faz com que armazenar esse grande volume de dados em diversas máquinas seja mais simples.

Listas e Tuplas em Python

Listas Apesar de aparentemente serem criadas e usadas como arrays, Python não possui esse tipo de estrutura, sendo a lista o mais próximo. Uma vantagem disso é que as listas têm tamanho variável, enquanto arrays não. Por outro lado, arrays são mais rápidos do que listas.  Caso queira trabalhar com arrays, a biblioteca numpy oferece esse tipo de estrutura, assim como diversos métodos (bastante otimizados) para manipulação dos mesmos. As listas podem conter elementos de qualquer tipo, mas isso é considerado uma má prática. Para criar uma lista: lista = [] # lista vazia lista = [-10, 2, 14, 27] # lista populada Podemos obter o elemento número n da lista (sendo n > 0 e n < len(lista):  lista = [-10, 2, 14, 27] lista[0] # -10 lista[2] # 14 Também é possível obter o elemento número n a partir do final da lista (sendo n > 1 e n <= len(lista)): lista = [-10, 2, 14, 27] lista[-1] # 27 lista[-4] # -10 Caso seja utilizado um index inválido (ou seja, fora do range da lista), ...

Biblioteca Python: Math

A biblioteca math possui diversas funções que facilitam a execução de operações matemáticas: Raiz quadrada: math.sqrt(25) # 5 Valor absoluto: math.fabs(-10.25) # 10.25 etc

Boas práticas Python

main() É uma boa prática criar um método main() no script principal para coordenar a execução da lógica do programa e as chamadas às outras bibliotecas/scripts Para garantirmos que a classe principal irá chamar o método main() do próprio script e não de algum outro script importado, comparamos se a variável global __name__ é igual à “__main__”: if __name__ == “__main__”: main()

Pygame: principais códigos do teclado

Pygame Code ASCII Common Name K_BACKSPACE \b backspace K_RETURN \r return K_TAB \t tab K_ESCAPE ^[ escape K_SPACE   space K_COMMA , comma sign K_MINUS - minus K_PERIOD . period slash K_SLASH / forward K_0 0 0 K_1 1 1 K_2 2 2 K_3 3 3 K_4 4 4 K_5 5 5 K_6 6 6 K_7 7 7 K_8 8 8 K_9 9 9 K_SEMICOLON ; semicolon sign K_EQUALS = equals sign K_LEFTBRACKET [ left K_RIGHTBRACKET ] right K_BACKSLASH \ backslash bracket K_BACKQUOTE ` grave K_a a a K_b b b K_c c c K_d d d K_e e e K_f f f K_g g g K_h h h K_i i i K_j j j K_k k k K_l l l K_m m m K_n n n K_o o o K_p p p K_q q q K_r r r K_s s s K_t t t K_u u u K_v v v K_w w w K_x x x K_y y y K_z z z K_DELETE delete K_KP0 keypad 0 K_KP1 keypad 1 K_KP2 keypad 2 K_KP3 keypad 3 K_KP4 keypad 4 K_KP5 keypad 5 K_KP6 keypad 6 K_KP7 keypad 7 K_KP8 keypad 8 K_KP9 keypad 9 period K_KP_PERIOD . keypad divide K_KP_DIVIDE / keypad multiply K_KP_MULTIPLY * keypad minus K_KP_MINUS - keypad plus K_KP_PLUS + keypad enter K_KP_ENTER \r keypad equals K_KP_EQUALS = keypad ...