mini-python [0]
Arnaldo Russo
www.ciclotux.org
Python
Seu nome foi influenciado pelo Monty Python’s
Güido van Rossum
Linguagem Clara
[1]: import this
The Zen of Python, by Tim Peters
- Grande base de código e bibliotecas de terceiros
- Grande comunidade de desenvolvedores
- Software Livre: liberdade de uso, distribuição. Licença própria, compatível com GPL, porém pode distribuir somente o binário.
instalações prontas
Instalações prontas
Linux - python instalado nas distros
numpy
scipy
matplotlib
Spyder - Ide
spyder - python IDE for scientists
Sintaxe
"#" são comentários. Tanto para indicar o tipo de texto Quanto para inserir comentários
de codigo.
#!/usr/bin/env python # -*- coding: utf-8 -*- # Comentario para um print
print(7 * 3)
sintaxe
- Exceto quando explicitamente continuadas na próxima linha física, para isto usa-se o "\".
a = b + c
x = x * f + \
x0 * f
l = [1, 2,
3, 4]
d = { 'a' : 1, 'b' : 2 }
if a > x and \ if a > x and \
b < y: b < y:
print("texto") print("texto")
sintaxe
Identações
Devem ser feitas com 4 espaços.
!! CUIDADO para não confundir TAB com espaço.
Configurar o editor!
Lógica
Lógica
# para i na lista
for i in [104, 234, 654, 378, 798]:
if i % 3 == 0:
print( i, "/3 = ", i/3)
# jeito arrumadinho de dizer
print("%d/3 = %d" % (i, i/3))
Strings
-
Strings
Convencional: ’texto’ ou “texto”
Multi-Line: ’’’texto várias linhas’’’
Multi-Line: ’’’texto várias linhas’’’
ou “““texto várias linhas”””
Unicode: u’texto unicode’ ou u”texto”, ...
Raw: r’texto bruto\n’
Strings em várias linhas são concatenadas.
-
Números parecido com outras linguagens, C, C++, Java:
Inteiro: 123 (decimal), 0632 (octal), 0xff00 (hexadecimal)
-
Longo: 123 ou 123
-
Ponto Flutuante: 3.14, 10., .12, 1.23e-9
- Complexos: 10.0 + 3j
EXCEÇÕES
Palavras RESERVADAS
AND, DEL, FOR, IS, RAISE, ASSERT, ELIF, FROM, LAMBDA, RETURN, BREAK, ELSE, GLOBAL, NOT, TRY, CLASS, EXCEPT, IF, OR, WHILE, CONTINUE, EXEC, IMPORT, PASS, YIELD, DEF, FINALLY, IN, PRINT
Começando uma sessão
Para trabalhar com funções e operações numéricas:
numpy
import numpy as np
Todas as funções implementadas no pacote Numpy, poderão ser acessadas com np.[+ atributo]
Listas e tuplas
Tupla: imutável
Lista: mutável
tupla = (0,1,2,3,4,5) lista = list(tupla) # [0,1,2,3,4,5]
dicionarios
d = {}
d['chave'] = 'valor'
print(d)
{'chave': 'valor'}
>>> d.keys()
['chave']
>>> d.values()
['valor']
>>> d.items()
[('chave', 'valor')]
Dicionario
d = dict(chave = 'valor', numero = 3)
In [1]: d = dict(chave = 'valor', numero = 3)
In [2]: d Out[2]: {'chave': 'valor', 'numero': 3}
Apagando e limpando
# Apagando e limpando
- apagando elementos
- apagando variáveis
-
limpando variáveis carregadas #reset
começando
CRIAR UM ARRAY:
np.array([1, 2, 3, 4])
# Jeito errado
np.array(1, 2, 3, 4)
Verificar o shape:
var = np.array(30)
np.shape(var)
var.shape
VERIFICAR O TAMANHO:
len(var)
var = np.array(30)
np.shape(var)
var.shape
VERIFICAR O TAMANHO:
len(var)
Exercícios
Ex. 1: Criando variáveis:
Obter ajuda no 'help' '??' sobre as seguintes funções:
Numpy
Criar um vetor com 10 elementos
a) ones
b) zeros
c) randn
TIP: Verificar a existência das variáveis:
Utilizar os comandos who e whos.
Tipos Numéricos
Construindo arrays.
Ver funções habilitadas para um np.array
"var.[tab]"
"T, size, reshape, min, max, mean, argmin, argmax, etc"
Função "ones", "zeros", "random"
Exercícios
- vetor de uns (1s) com 10 linhas e 1 coluna.
-
matriz de zeros de 4x3.
-
Criar uma variável randômica de 3 x 8 x 2
-
Criar um vetor de 1 a 15 com espaçamento de 0.5 entre cada elemento.
- Verificar o tamanho do vetor criado.
- Criar um vetor com os seguintes elementos: 1, 4, 3, 8, 6, 9, 34, 67, 87, 98, 0, 1, 3, 6, 8.
- Verificar o tamanho do vetor criado.
- Criar uma matriz 3x5 com os mesmos valores do exercício anterior.
Tipos Numéricos
Concatenação
-
a = np.random.random(30)
-
b = np.random.random(30)
-
c = np.column_stack((a,b))# checar o shape (c.shape)
-
d = np.row_stack((a,b)) # d.shape
TIPOS NUMÉRICOS
Cópias de vetores em ambiente Numpy:
-
g = a #alterações em g, mudam a
-
g = a.copy() #sem alteraçõea agora.
Acessando elementos de arrays
-
g = g.reshape(3,5)
-
g[1,3] # atenção !! (python começa a contar com "0")
Mais tipos
Slices ou Indexação:
- g = np.arange(35).reshape(5,7)
-
g[:,0]
- # lembrar que o len(g) e´ o numero de linhas
- g[0] # vai retornar a primeira linha.
- g[...,2:7:2]
- g[..., ::2]
- x[(0,2,4), 3:-1] #cuidar com posiçoes.
mais tipos
Criando mascaras
- x = np.arange(35).reshape(7,5)
- b = x>20
- print(b)
- x[b]
- b[:,5]
- x[b[:,5]]
só Ctrl + s salva
np.save(file, arr) # .npy
np.load('file.npy')
#exemplo de um dict, para salvar mais de uma var.
np.savez('dicionario.npz', **dict_criado) #asteriscos importantes para não salvar como array.
dados = np.load('dicionario.npz')
dados.keys() #mostra as chaves que podem ser carregadas