Aprendendo Python na Prática

Propaganda
Aprendendo Python na Prática
Dante Moreira Zaupa
Mestrando em Computação Aplicada
Bolsista de Pesquisa
Introdução
ou “Não pensem besteira”
Por que usar Python?
produtivo
Por que usar Python?
produtivo
portável
Por que usar Python?
produtivo
boas
práticas
portável
Por que usar Python?
produtivo
boas
fácil
práticas
portável
Por que usar Python?
produtivo
boas
fácil
práticas
portável
divertido
Outras opções
IronPython
# vai em qualquer lugar
“““ Dentro do bloco, antes
do primeiro comando ”””
DOCUMENTE SEU CÓDIGO
DOCUMENTE SEU CÓDIGO
DOCUMENTE SEU CÓDIGO
DOCUMENTE SEU CÓDIGO
DOCUMENTE SEU CÓDIGO
DOCUMENTE SEU CÓDIGO
DOCUMENTE SEU CÓDIGO
help(spam)
dir(eggs)
help(spam)
dir(eggs)
A Linguagem
ou “Oi, meu nome é Python.”
print “This is an EX parrot!”
print “This is an EX parrot!”
Identação/Delimitador de bloco
espaços XOR tab
espaços > tab
INDENTE SEU CÓDIGO
INDENTE SEU CÓDIGO
INDENTE SEU CÓDIGO
INDENTE SEU CÓDIGO
INDENTE SEU CÓDIGO
INDENTE SEU CÓDIGO
INDENTE SEU CÓDIGO
int
42
int
float
42
3.14159265358979
323846264338327
950288419716939
9375105820
int
str
42
“Johann Gambolputty de von
Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...”
float
3.14159265358979
323846264338327
950288419716939
9375105820
int
str
42
“Johann Gambolputty de von
Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...”
float
3.14159265358979
323846264338327
950288419716939
9375105820
list
[“idle”, “cleese”,
“gilliam”, “jones”,
“chapman”, “palin”]
int
str
dict
42
“Johann Gambolputty de von
Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...”
float
{ 'ovelha': 'voadora',
'tigre': 'framboesa',
'papagaio': 'morto'
}
3.14159265358979
323846264338327
950288419716939
9375105820
list
[“idle”, “cleese”,
“gilliam”, “jones”,
“chapman”, “palin”]
int
str
dict
42
“Johann Gambolputty de von
Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...”
float
{ 'ovelha': 'voadora',
'tigre': 'framboesa',
'papagaio': 'morto'
}
3.14159265358979
323846264338327
950288419716939
9375105820
list
tuple
(42, 2.3,
math.pi)
[“idle”, “cleese”,
“gilliam”, “jones”,
“chapman”, “palin”]
+
/ %
and
or
not
spam[3:] (até)
spam[:3] (à partir de)
spam[1:3] (intervalo)
spam[-3:]
spam[:-3]
v = raw_input(<string>)
Comparando
ou “O que vocês já sabem,
mas ainda não sabem que sabem”
Python
def spam(parrot, eggs = []):
<comando 1>
<comando 2>
<comando 3>
Java
<modificadores> <tipo> spam(Bird parrot, List<Egg> eggs) {
<comando 1>
<comando 2>
<comando 3>
}
def spam()
def _spam()
def __spam()
def spam(eggs)
def spam(eggs = 42)
def spam(self, eggs)
def spam(*eggs)
def spam(**eggs)
int
Tipos
Imutáveis
str
tuple
SEM
efeitos
colaterais
->
float
Python
if <condição>:
<comando 1>
<comando 2>
elif <condição>:
<comando 3>
<comando 4>
else:
<comando 5>
<comando 6>
Java
if (<condição>) {
<comando 1>
<comando 2>
} else if (<condição>) {
<comando 3>
<comando 4>
} else {
<comando 5>
<comando 6>
}
Exercício
No interpretador:
Um programa que receba um
número e o identifique como
par ou ímpar.
Python
if <var> == <val1>:
<comando 1>
elif <var> == <val2>:
<comando 2>
else:
<comando 3>
Java
switch (<var>) {
case <val1>: <comando 1>
break;
case <val2>: <comando 2>
break;
default: <comando 3>
}
Exercício
No interpretador:
Um programa que receba um
número e que informe se ele é
divisível por 2, por 5, ou não é
divisível por nenhum dos dois.
Python
Java
for spam in range(<int>):
for (int spam; spam < <int>; spam++) {
<comando 1>
<comando 2>
<comando 3>
for spam in <lista>:
<comando 1>
<comando 2>
<comando 3>
}
<comando 1>
<comando 2>
<comando 3>
for (<Tipo> spam : listaTipo) {
}
<comando 1>
<comando 2>
<comando 3>
range(<começo>,
<parada>,
)
<passo>
Exercício
No interpretador:
Escreva um programa que exiba
o resultado da soma dos número
no interavalo [0..1,000,000].
Python
while <condição>:
<comando 1>
<comando 2>
<comando 3>
Java
while (<condição>) {
<comando 1>
<comando 2>
<comando 3>
}
Exercício
No interpretador:
Use um loop pra determinar o
valor máximo que um inteiro
pode ter, em Python.
Python
class Ovelha(Mamifero):
<atributos>
Java
public class Ovelha extends Mamifero {
private boolean fly = True;
def __init__(self, f):
self.__fly = f;
<outros atributos>
public Ovelha(boolean f) {
this.fly = f;
}
<métodos>
<métodos>
}
TUDO
SÃO
CLASSES
E toda classe é uma lista de seus atributos e métodos
arq = open(“jcleese.txt”, “r+”)
read
write
read + write
append
(só Windows) binary
arq.close()
string = arq.read(<quantidade>)
string = arq.readline()
lista_strings = arq.readlines()
for line in arq:
print line
Leu de um arquivo?
É UMA
STRING!
arq.write(“Always look on the \
bright side of life”)
arq.write(“A resposta é” + \
str(42))
SOMENTE
STRINGS
Arquivos só aceitam strings.
import <biblioteca>
import <biblioteca> as <nome>
from <biblioteca> import <membros>
try:
<comandos>
except <exceção>:
<comandos>
else:
<comandos>
Indo além
Ou “AGORA que fica divertido”
f = lambda x: x + “ spam”
map(f, [“eggs”, “spam eggs”])
f = <func> for <var> in <list>
exec(<string com o código>)
http://dzaupa.notapipe.org/minicurso_python/arqs/monica.pyc
Perguntas?
dante.zaupa
@
gmail.com
http://
dzaupa.
notapipe.org/
Download