Sei sulla pagina 1di 67

Introduo ao Python

Python

Mrcio Palheta
marcio.palheta@gmail.com

1
O que Python?
Linguagem de altssimo nvel
Suporte nativo a estruturas de dados de alto nivel
Multiplataforma
Unix, Windows, Symbian, Solaris, etc...
Multiparadigma
Procedural, OO, funcional
Opensource
Dinmica e Forte
Joga com outras linguagens
(.NET) IronPython, (Java) Jython, C e C++

2
Por que Python?
Aprendizado fcil
Sintaxe limpa e de fcil leitura
Forte suporte da comunidade
Bem documentada
Biblioteca
Divertida
Mais com menos [cdigo]
Liberdade

3
Quem usa Python?
Google
NASA
Nokia
Gimp/Inkscape/Blender
Governo (brasil.gov.br)
Portal G1 (g1.globo.com)
Entre outras...
http://www.python.org/about/success/
http://www.python.org.br/wiki/EmpresasPython

4
Instalao do Python - Linux
J vem por padro instalado nas distribuies;
Opo de instalao:
$ sudo apt-get install python
Execuo via terminal:
$ python

5
Instalao do Python
Windows
Download:http://www.python.org/getit/windows/
Execute o programa baixado. Ex: python-2.7.3.msi
Pacotes instalados:

6
Interpretador Interativo

print Hello, World!

7
Executando arquivos *.py

Use um editor de texto;


Escreva o cdigo para
imprimir uma mensagem

Salve o arquivo:
Helloworld.py

8
Executando arquivos *.py
No terminal, entre no diretrio onde salvou o arquivo
heloworld.py;
Digite o comando para execuo de arquivos python:
$ python helloworld.py

9
Conceitos Bsicos
Case sensitive
This this

Blocos por endentao


se condio: se condio:
bloco bloco

Tipagem dinmica

a=2 a = alguma coisa a = 2.3

Tudo objeto
No tem ponto e virgula no final (;)
Comentrios comeam com #

10
Por dentro da API
Os comandos mais importantes!

dir( objeto )
Retorna uma lista de atributos e mtodos do objeto

help( objeto)
Mostra a documentao do objeto

11
Variveis e Tipos Bsicos
Atribuio:
nome_da_variavel = valor
Inteiros, Inteiros Longos, Reais, Strings e Booleanos
>>> a = 10000000000000000000000000000000000000000005646789467
>>> type(a)
<type 'long'>
>>> a = 4 >>> a = 5.3209 >>> a = True >>> a = 'texto'
>>> type(a) >>> type(a) >>> b = False >>> b = "texto"
<type 'int'> <type 'float'> >>> type(a) >>> type(a)
<type 'bool'> <type 'str'>
>>> type(b) >>> type(b)
Tente usar dir(a) e help(a) <type 'bool'> <type 'str'>

12
Converso dos Tipos Bsicos
int(), float(), str(), bool(), long()

>>> int(3.1415) >>> float(3) >>> str(25) >>> str(True) >>> bool(1)
3 3.0 '25' 'True' True

>>> bool(0) >>> bool(43) >>> bool('lala') >>> bool('')


False True True False

>>> float(233333333333337777777777778888888888999999999999933334421L)
2.3333333333333778e+56

>>> long(2.56)
2L Teste no interpretador!

13
CUIDADO!
Cuidado com os binrios, octais e hexadecimais

>>> a = 0b10 >>> a = 032 >>> a = 0x32


>>> a >>> a >>> a
2 26 50

>>> bin(2) >>> oct(26) >>> hex(50)


'0b10' '032' '0x32'

14
Operadores Aritmticos
+, -, *, /, //, **, % >>> a = 2 >>> a = 2 >>> 4 // 1.3
>>> b = 3 >>> b = 3.5 3.0
Diviso com nmeros >>> a + b >>> a + b >>> 10 // 1.3
inteiros resulta em um 5 5.5 7.0
nmero inteiro >>> a - b >>> a - b >>> 10 // 3.3
-1 -1.5 3.0
// - diviso inteira >>> a * b >>> a * b
** - exponenciao 6 7.0 >>> 10%3
% - resto da diviso >>> a / b >>> a / b 1
0 0.5714285714285714 >>> 10%2
>>> a // b >>> a // b 0
0 0.0 >>> 5%3
>>> a ** b >>> a ** b 2
Teste no interpretador 8 11.313708498984761

15
Python como calculadora

16
Operadores Lgicos
and, or, not
>>> True and True >>> True or True >>> not True
True True False
>>> True and False >>> False or True >>> not False
False True True
>>> False and False >>> False or False >>> not 1
False False False
>>> 1 and True >>> 1 or False
True 1
>>> 0 and True >>> 0 or False
0 False

>>> not ((a or False) and (False or False))


True

17
Operadores Relacionais
>, <, >=, <=, ==, !=, <> >>> 2 > 3 >>> 2 == 2 >>> x = 3
False True >>> 2 < x < 4
!= e <> significam diferente >>> 2 < 3 >>> 2 == 1 True
True False >>> 7 > x > 1
possvel usar vrios >>> 3 >= 3 >>> 3 != 2 True
operadores na relao: True True >>> 3 <= x <4
1<2<=3<4<5>4>3>=2!=1 >>> 4 <= 3 >>> 3 != 3 True
False False
# - indica um comentrio >>> 3 <> 3
False
>>> 2 <> 2
False

18
Manipulao de Strings
Podemos representar Strings com (') ou (' ')

19
Textos em vrias linhas

20
Operaes com Strings
Operaes:
+ : Concatenao >>> st = curso ' >>> st = Casa
>>> st + python' >>> st*3
* : Replicao curso python' CasaCasaCasa'

str[i]: retorna o >>> st = 'arquivo.mp3' >>> st = 'arquivo.mp3'


caracter de ndice i >>> st[0] >>> st[2:]
'a' 'quivo.mp3'
da string str; >>> st[-1] >>> st[0:-4]
str[inicio:fim] '3' 'arquivo'
>>> st[-4] >>> st[-3:]
retorna uma '. ' 'mp3
substring de str
Teste no interpretador

21
Conhecendo as Strings

dir(string ou variavel)

>>> dir('string')
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__',
'__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__',
'__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split',
'_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith',
'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',
'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust',
'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
'translate', 'upper', 'zfill']

22
Mtodos de Strings
split(char) len(str)
Retorna uma lista com os Retorna o tamho da
elementos separados por string str
char >>> a = '1+2+3+4+5+6' >>> a = 'curso de python'
>>> a.split('+') >>> len(a)
['1', '2', '3', '4', '5', '6'] 15

strip(chars)
Retorna uma string onde >>> a = ' !!! STRING DE RETORNO! !! ! !'
os chars da direita e da >>> a.strip(' !')
esquerda foram 'STRING DE RETORNO'
removidos

23
Mtodos de Strings
find(substring)
Retorna a posio da primeira ocorrncia da substring.
Caso no seja encontrada, retorna -1
>>> a = 'curso de python' >>> a = 'curso de python'
>>> a.find('de') >>> a.find('casa')
6 -1

lower(), upper()
Retornam uma string em minsculo/maisculo
>>> a = 'CuRsO dE pYtHoN!' >>> a = 'CuRsO dE pYtHoN!'
>>> a.lower() >>> a.upper()
'curso de python!' 'CURSO DE PYTHON!'

24
Mtodos de Strings

Procurem mais
mtodos de string com
dir() e help()

25
Exerccios
A partir da string !! ! a;b;c;d;e;f;gh!######### gere o resultado:
[a, b, c, d, e, f, g]

A partir da string ring ring! - hello! gere o resultado:


hello!

Transformar a string isso deve ser bom para Isso Deve Ser Bom
Transformar a string abacate azul em 4b4c4te 4zul

Dica: para os dois ltimos, pesquise os mtodos de


string usando dir()

26
Exerccios
A partir da string !! ! a;b;c;d;e;f;gh!######### gere o
resultado:
[a, b, c, d, e, f, g]

string = '!! ! a;b;c;d;e;f;gh!#########'


print string.strip(' !#h').split(';')

27
Exerccios
A partir da string ring ring! - hello! gere o resultado:
hello!

string = 'ring ring! - hello!'


print string[string.find('hello'):]

string = 'ring ring! - hello!'


print string[13:]

28
Exerccios
Transformar a string isso deve ser bom para Isso Deve Ser
Bom

string = 'isso deve ser bom'


print string.title()

Transformar a string abacate azul em 4b4c4te 4zul

string = 'abacate azul'


print string.replace('a', '4')

29
Difcil?

Naadaaaaa

30
Desvio Condicional
if condicao:
comandos >>> a = input('Digite um numero: ')
Digite um numero: 4
elif condicao: >>> if a%2 == 0:
comandos ... print Par
... else:
else: ... print Impar
comandos Par

No precisa de (parntesis), mas podem ser usados

31
Desvio Condicional
No existe SWITCH/CASE, quando necessrio vrias
comparaes, usamos elifs ou dicionrio (explicado mais
frente)
Pode ser escrito em uma linha:
SETRUE if condio else SEFALSE
>>> numero = input('entre com um numero: ')
entre com um numero: 5
>>> print 'par' if numero%2 == 0 else 'impar'
impar

32
Exerccios
Leia dois nmeros e imprima o maior deles
Leia uma letra, se for M imprima Masculino, se for F
imprima Feminino, seno imprima Sexo invalido.

DICA:
variavel = input() #Para nmeros
variavel = raw_input() #Para strings

33
Exerccios
Leia dois nmeros e imprima o maior deles

numero1 = input('Numero 1: ')


numero2 = input('Numero 2: ')
if numero1 > numero2:
print numero1
elif numero1 < numero2:
print numero2
else:
print 'iguais'

34
Exerccios
Leia uma letra, se for M imprima Masculino, se for F
imprima Feminino, seno imprima Sexo invalido.

letra = raw_input('Sexo: ')


if letra == 'M':
print 'Masculino'
elif letra == 'F':
print 'Feminino'
else:
print 'Sexo invalido'

35
Loops
O While quase igual s outras linguagens:

>>> x = 0
while condio: >>> while x < 10:
print x,
comandos x += 1
else:
0123456789
comandos

36
Loops
O While quase igual s outras linguagens:

>>> x = 0
while condio: >>> while x < 10: ELSE no WHILE
print x, ?????????????
comandos x += 1
else:
0123456789
comandos

37
Loops
O else s executado se no ocorreu nenhum break durando
o while, ou seja, se o while parar pela condio.
>>> numero = input('entre com um numero: ')
entre com um numero: 11
>>> x = 2
>>> while x < numero: uuuuhhhh
if numero%x == 0: SHOW!
print 'nao primo'
break
x += 1
else:
print numero, ' primo

11 primo

38
Loops
O for em python parecido com o foreach de outras
linguagens:

for variavel in sequencia: >>> for letra in 'string':


print letra
comandos
else: s
t
comandos r
i
n
g

39
Loops
Trabalhando com listas: [...].

>>> for elemento in [1,3,3,6,4,2,7]:


print elemento*2

2
6
6
12
8
4
14

40
Loops
a funo range(numero) retorna uma lista de nmeros
>>> range(10) >>> for i in range(10):
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print i,

0123456789
>>> range(5,10) >>> for i in range(5,10):
[5, 6, 7, 8, 9] print i,

56789
>>> range(0,10,2) >>> for i in range(0,10,2):
[0, 2, 4, 6, 8] print i,

02468

41
Exerccios
Imprima a tabuada de multiplicao de um nmero digitado
pelo usurio;
Some os nmeros impares de 0 a 100;
Imprima uma frase digitada pelo usurio, continue lendo e
imprimindo at o usurio digitar SAIR

42
Exerccios
Imprima a tabuada de um nmero digitado pelo usurio
numero = input('Entre com um numero: ')
for i in range(11):
print numero, 'x', i, '=', numero*i

Imprima a soma dos nmeros impares de 0 a 100


soma = 0
for i in range(1, 100, 2):
soma += i
print soma

43
Exerccios
Imprima a tabuada de um nmero digitado pelo usurio
numero = input('Entre com um numero: ')
for i in range(11):
print numero, 'x', i, '=', numero*i

Imprima a soma dos nmeros impares de 0 a 100


soma = 0
for i in range(1, 100, 2):
soma += i
print soma

sum(range(1,100,2)

44
Exerccios
Imprima uma frase digitada pelo usurio, continue lendo e
imprimindo at o usurio digitar SAIR
while True:
frase = raw_input('Frase: ')
if frase == 'SAIR': break
print 'FRASE: ', frase

No tem problema usar While


True em python! No exemplo o
While True evita repetio de
cdigo!

45
Funes
Para criar uma funo:
def nome_da_funcao( parametros ):

Para retornar algum valor, usamos o return


Uma funo no precisa retornar algo.
No existe sobrecarga
>>> def fat(n):
return 1 if n < 2 else fat(n-1)*n

>>> fat(5)
120

46
Funes
Valor padro de um parmetro.
Substitui a sobrecarga e evita repetio de cdigo
def funcao(a, b=5): public void funcao(int a) {
print 'a =',a System.out.println('a = '+a);
print 'b =',b System.out.println('b = 5');
}
>>> funcao(2)
a=2 public void funcao(int a, int b) {
b=5 System.out.println('a = '+a);
>>> funcao(2,6) System.out.println('b = '+b);
a=2 }
b=6
>>> funcao(b=9, a=4)
a=4
b=9

47
Exerccios
Faa uma funo para calcular o fatorial de um nmero
(funo no recursiva)
Faa uma funo para verificar se um nmero primo ou no

48
Exerccios
Faa uma funo para calcular o fatorial de um nmero
(funo no recursiva)

def fatorial(n):
resultado = 1
for i in range(2, n+1):
resultado *= i
return resultado

49
Exerccios
Faa uma funo para verificar se um nmero primo ou no

def primo(n):
for i in range(2, n):
if n%i == 0:
return False
return True

50
Listas
No existe vetores em Python, ns usamos listas
Uma lista guarda uma seqncia de itens
So identificadas por colchetes [ ]
>>> lista = [1,2,3,4,5]
>>> print lista
[1, 2, 3, 4, 5]

Os itens podem ser acessados como um vetor


>>> lista[0]
1
>>> lista[4]
5

51
Listas
Inserindo elementos
append( obj ) >>> lista = [1,2,3]
>>> lista.append(0)
Insere o objeto no fim da lista >>> lista
[1, 2, 3, 0]

insert( posio, obj )


Insere o objeto na posio especificada
>>> lista = [1,2,3]
>>> lista.insert(1, 'objeto')
>>> lista
[1, 'objeto', 2, 3]

52
Listas
Removendo elementos
remove(obj) >>> lista = ['a','b',3]
>>> lista.remove('b')
Remove o objeto da lista >>> lista
['a', 3]

pop(posio) >>> lista = ['a', 2, 'b', 4, 'c']


>>> lista.pop(0)
Remove e retorna o objeto da 'a'
posio especificada. O pop() >>> lista
sem parmetros retira o ltimo [2, 'b', 4, 'c']
>>> lista.pop()
elemento 'c'
>>> lista
[2, 'b', 4]

53
Listas
Outros mtodos
count( obj )
Retorna a quantidade de elementos obj da lista
index( obj )
Retorna a posio do obj na lista
reverse()
Inverte a lista colocando os elementos ao contrrio
sort()
Ordena a lista
Usem dir() e help()

54
Tuplas
Definidas por parntesis ( ) ou objetos divididos por ,
>>> tupla = (1,2,3) >>> tupla = 1,2,3
>>> tupla >>> tupla
(1, 2, 3) (1, 2, 3)

Parecidos com listas, mas so imutveis


>>> lista = [1,2,3] >>> tupla = (1,2,3)
>>> lista[0] = 4 >>> tupla[0] = 4
>>> lista Traceback (most recent call last):
[4, 2, 3] File "<pyshell#40>", line 1, in <module>
tupla[0] = 4
TypeError: 'tuple' object does not support item assignment

55
Dicionrios
O programador pode definir a chave do item
Representados por chaves { }

>>> dicionario = {'chave' : 'item', 2 : 4}


>>> dicionario['chave']
'item'
>>> dicionario[2]
4

Use dir() e help()

56
Dicionrios
Inserir item
dicionario[chave] = obj
Remover item
dicionario.pop(chave)
Se no encontrar a chave retorna erro
dicionario.pop(chave, retorno)
Se no encontrar a chave retorna o valor de retorno
Remover todos itens
dicionario.clear()

57
Dicionrios
Acessar item
dicionario[chave]
Se a chave no existir retorna erro
dicionario.get(chave)
Se a chave no existir retorna None
dicionario.get(chave, retorno)
Se a chave no existir retorna o valor de retorno
Verificar se existe item
dicionario.has_key(chave)

58
Exerccios
Funo para calcular srie Fibonacci at n
Imprimir quantos nmeros so maiores que 10 na lista:
[1, 4, 15, 26, 3, 6, 10, 13, 5, 3]
Leia o nome e a nota de 5 alunos e guarde em um dicionrio
Funo que receba uma string imprima em escada, ex:
T
TE DICA: Use a funo len(objeto) para
TES pegar o tamanho da string
TEST
TESTE

59
Exerccios
Calcular srie Fibonacci at n

def fibonacci(n):
fibs = [0, 1]
for i in range(n-2):
fibs.append(fibs[-2] + fibs[-1])
return fibs

60
Exerccios
Verificar quantos nmeros so maiores que 10 na lista:
[1, 4, 15, 26, 3, 6, 10, 13, 5, 3]
lista = [1, 4, 15, 26, 3, 6, 10, 13, 5, 3]
soma = 0
for item in lista:
if item > 10:
soma += 1
print soma

61
Exerccios
Leia o nome e a nota de 5 alunos e guarde em um dicionrio

notas = {}
for i in range(5):
nome = raw_input('nome: ')
nota = input('nota: ')
notas[nome] = nota
print notas

62
Exerccios
Funo que receba uma string imprima em escada, ex:
T
TE
def funcao(palavra):
TES for i in range(len(palavra)):
TEST print palavra[:i+1]
TESTE

63
64
Contatos

Mrcio Palheta
marcio.palheta@gmail.com
@marciopalheta
http://sites.google.com/site/marciopalheta

65
Bibliografia
LIVRO: Apress - Beginning Python From Novice to Professional
LIVRO: O'Relly - Learning Python
http://www.python.org
http://www.python.org.br

Mais exerccios:
http://www.python.org.br/wiki/ListaDeExercicios

Documentao do python:
http://docs.python.org/

66
Introduo ao Python

Python

Mrcio Palheta
marcio.palheta@gmail.com

67

Potrebbero piacerti anche