Nesse link encontrei uma série de video aulas para Python, do básico a assuntos mais avançados como o pacote NLTK e RDFLib.
Vou dedicar pelo menos 3 horas por semana para essa questão uma vez que estou sentindo falta de não ter conhecimento de uma linguagem que possa dar suporte a uma possível necessidade da fase de experimentos da pesquisa.
Além disso Python é a linguagem usada no projeto NIMA e outros projetos de desenvolvimento do grupo de pesquisa BioBD e também tem grande potencial de apoiar o WorkFlow do INCA. Python é uma linguagem imperativa de alto nível interpretada.
Linguagens de programação são linguagens formais e precisas (não ambíguas) e podem seguir dois paradigmas: Imperativo ou Declarativo.
Linguagens imperativas (ou procedural) são aquelas cujos passos e a ordem de execução são definidas pelo programados (como fazer). Podem ser de alto (Java, C,...) ou baixo nível (de máquina). As linguagens imperativas de alto nível podem ser do tipo interpretadas ou compiladas.
Linguagens declarativas (como o SQL) são aquelas que o programador define o que deseja ser feito mas não especifica o como.

02/09: Assisti até o vídeo 1.6 (aproximadamente 2 horas)
Instalado o Jupyter Notebook
Para acessar, abrir o prompt de comando e digitar jupyter notebook (no caminho onde os programas foram salvos -> C:\Users\versa\AppData\Roaming\Python\Python38\Scripts). O servidor será iniciado e uma aba do browser deverá ser aberta para acesso.
Salvei os programas em python aqui -> C:\Users\versa\Documents\Python Scripts (computador novo!)
Os slides das aulas estão no Google Classroom: https://classroom.google.com/ .
Para se matricular, digite o código "wcofeb5".
Link da documentação oficial -> https://docs.python.org/pt-br/3/
03/09: Videos aulas 2.1 e 2.2 (aproximadamente 1 hora)
Não se esqueça, indentação é importante para distinguir os comandos de cada condição:
if condição:
....comando
....comando
....if condição:
........comando
else:
....comando
if condição:
....comando
elif condição:....comando
else:
....comando
Geralmente, definem-se 4 espaços como indentação para cada condição.
06/09: Vídeo aulas 3.1, 3.2, 3.3 (aproximadamente 1 hora e 30 minutos)
Funções podem não receber parâmetros e não precisam retornar valores. A indentação é importante pq não existe end-def
def <nome da função>(param1, param2, ..., paramN):
Funções externas (definidas em outros arquivos) devem ser importadas antes de serem invocadas. Caso o arquivo seja alterado depois de importado o notebook deve ser recarregado (restart the kernel)
import <arquivo de funções>
from <arquivo de funções> import <nome de uma função>
O import pode ser de módulos (qq localização) ou programas (na mesma localização do notebook)
Instalação do pyCharm Edu (IDE) e importação de um programa de aprendizagem. Essa IDE é muito pesada, consome bastante memória e CPU da máquina.
13/09: Exercícios da aula 3 e vídeo aulas 4.1 e 4.2 (aproximadamente 2 horas e 30 minutos)
Variáveis como listas (operações append, len) e operações com strings (strip, isupper, islower)
16/09: Vídeo aulas 5.1, 6.1, 6.2 (aproximadamente 1 horas e 30 minutos)
Debugar com o pyCharm (o jupyter notebook não permite debug): Bullet point (duplo click ao lado da linha), Step Over, Step Into (entrar na função), Step Out (sair da função), Resume (vai para o próximo bullet).
Exercício do vídeo 5.2: tentei fazer mas demora muito abrir o ep2.zip no pyCharm e travou.
def reta(n, d='v'): ...... funções permitem valores default que podem ser omitidos na chamada
reta(4)
reta(6, 'h')
print ('*', end=' ') .... o separador padrão do print é a quebra de linha /n mas é possível usar outros
print ('*', end='\t') .... o separador \t inclui um TAB entre os valores
24/09: Vídeo aulas 7.1, 7.2, 7.3 (aproximadamente 2 horas e 30 minutos)
Listas são uma estrutura de dados bem interessante
Lista começam no posição 0, podem ser acessadas do fim para o início (-1, -2,....)
len(lista)) .... retorna o tamanho da lista, ou seja, o número de itens
lista.index(<valor>)) ... retorna a posição do valor na lista, se existir. Se não existir erro
lista.append(<valor>) ... inclui um item no final da lista
lista[<posicao>] ... acessar o elemento da posição
for item in lista: ... percorre os itens da lista e retorna o valor na variável item
zip(lista1, lista2) .... faz merge de duas listas e cada elemento é uma tupla
del lista[<posicao>] ... remove da lista o elemento na posição
lista.remove(<valor>) ... remove da lista o elemento com o valor correspondente
if <valor> in lista: .... testar se o valor pertence a lista
del <variável> .... garbage collection, remover variáveis não mais utilizadas do código em python
list(range(ini, fim, intervalo)) ... gera uma lista de números de ini até fim com intervalo
a atribuição de uma lista1 em uma lista2 é feita por referência (e não por cópia de valores)
lista2 = lista1
ou seja, alterações em uma lista refletem na outra pq são alteração em uma área de memória
para fazer a cópia (clonar) é necessário
import copy
lista2 = copy.copy(lista1)
ou seja, a memória é duplicada e cada lista assume um ponteiro para a respectiva área
para concatenar duas listas: lista1 + lista2
min, max, sum, sorted(lista) ... mínimo, máximo, somatório e ordenação de listas
Maiores informações sobre lista na documentação oficial -> https://docs.python.org/3/tutorial/datastructures.html
Algumas ferramentas interessantes em python estão nas imagens abaixo.
Comentários
Postar um comentário
Sinta-se a vontade para comentar. Críticas construtivas são sempre bem vindas.