O que é Python?
• Linguagem de altíssimo nível
– Suporte nativo a estruturas de dados de alto nivel
• Multiplataforma
– Unix, Windows, Symbian, Solaris, etc...
• Multiparadigma• Multiparadigma
– Procedural, OO, funcional
• Opensource
• Dinâmica e Forte
• Joga com outras linguagens
– (.NET) IronPython, (Java) Jython, C e C++
2
Por que Python?
• Aprendizado fácil
• Sintaxe limpa e de fácil leitura
• Forte suporte da comunidade
• Bem documentada
• Biblioteca • Biblioteca
• Divertida
• Mais com menos [código]
• Liberdade
3
Quem usa Python?
• NASA
• Nokia
• Gimp/Inkscape/Blender
• Governo (brasil.gov.br)• Governo (brasil.gov.br)
• Portal G1 (g1.globo.com)
• Entre outras...
4
http://www.python.org/about/success/
http://www.python.org.br/wiki/EmpresasPython
Instalação do Python - Linux
• Já vem por padrão instalado nas distribuições;
• Opção de instalação:
– $ sudo apt-get install python
• Execução via terminal:
– $ python– $ python
5
Instalação 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 código para imprimir uma mensagem
8
• Salve o arquivo:
• Helloworld.py
Executando arquivos *.py
• No terminal, entre no diretório onde salvou o arquivo heloworld.py;
• Digite o comando para execução de arquivos python:
$ python helloworld.py
9
Conceitos Básicos
• Case sensitive
• Blocos por endentação
This ≠ this
se condição:bloco
se condição:bloco
• Tipagem dinâmica
• Tudo é objeto
• Não tem ponto e virgula no final (‘;’)
• Comentários começam com #
10
bloco bloco
a = 2 a = “alguma coisa” a = 2.3
Por dentro da API
• Os comandos mais importantes!
• dir( objeto )
– Retorna uma lista de atributos e métodos do objeto
• help( objeto)
– Mostra a documentação do objeto
11
Variáveis e Tipos Básicos
• Atribuição:
– nome_da_variavel = valor
• Inteiros, Inteiros Longos, Reais, Strings e Booleanos
>>> a = 10000000000000000000000000000000000000000005646789467>>> type(a)
12
>>> a = 4>>> type(a)<type 'int'>
>>> a = 5.3209>>> type(a)<type 'float'>
>>> a = 'texto'>>> b = "texto">>> type(a)<type 'str'>>>> type(b)<type 'str'>
>>> a = True>>> b = False>>> type(a)<type 'bool'>>>> type(b)<type 'bool'>
>>> type(a)<type 'long'>
Tente usar dir(a) e help(a)
Conversão dos Tipos Básicos
• int(), float(), str(), bool(), long()
>>> int(3.1415)3
>>> float(3)3.0
>>> str(25)'25'
>>> bool(1)True
>>> bool(0) >>> bool(43) >>> bool('')>>> bool('lala')
>>> str(True)'True'
13
>>> bool(0)False
>>> bool(43)True
>>> bool('')False
>>> bool('lala')True
>>> float(233333333333337777777777778888888888999999999999933334421L)2.3333333333333778e+56
>>> long(2.56)2L Teste no interpretador!
CUIDADO!
• Cuidado com os binários, octais e hexadecimais
>>> a = 032>>> a26
>>> a = 0x32>>> a50
>>> a = 0b10>>> a2
14
26 502
>>> bin(2)'0b10'
>>> hex(50)'0x32'
>>> oct(26)'032'
Operadores Aritméticos
• +, -, *, /, //, **, % >>> a = 2>>> b = 3>>> a + b5>>> a - b-1>>> a * b
>>> a = 2>>> b = 3.5>>> a + b5.5>>> a - b-1.5>>> a * b
>>> 4 // 1.33.0>>> 10 // 1.37.0>>> 10 // 3.33.0
Divisão com números inteiros resulta em um número inteiro
// - divisão inteira
15
>>> a * b6>>> a / b0>>> a // b0>>> a ** b8
>>> a * b7.0>>> a / b0.5714285714285714>>> a // b0.0>>> a ** b11.313708498984761
>>> 10%31>>> 10%20>>> 5%32
Teste no interpretador
// - divisão inteira** - exponenciação% - resto da divisão
Python como calculadora
16
Operadores Lógicos
• and, or, not
>>> True and TrueTrue>>> True and FalseFalse>>> False and False
>>> True or TrueTrue>>> False or TrueTrue>>> False or False
>>> not TrueFalse>>> not FalseTrue>>> not 1
17
>>> False and FalseFalse>>> 1 and TrueTrue>>> 0 and True0
>>> False or FalseFalse>>> 1 or False1>>> 0 or FalseFalse
>>> not 1False
>>> not ((a or False) and (False or False))True
Operadores Relacionais
• >, <, >=, <=, ==, !=, <> >>> 2 > 3False>>> 2 < 3True>>> 3 >= 3True>>> 4 <= 3
>>> 2 == 2True>>> 2 == 1False>>> 3 != 2True>>> 3 != 3
>>> x = 3>>> 2 < x < 4True>>> 7 > x > 1True>>> 3 <= x <4True
!= e <> significam “diferente”
É possível usar vários operadores na relação: 1<2<=3<4<5>4>3>=2!=1
18
>>> 4 <= 3False
>>> 3 != 3False>>> 3 <> 3False>>> 2 <> 2False
True1<2<=3<4<5>4>3>=2!=1
# - indica um comentário
Manipulação de Strings
• Podemos representar Strings com (') ou (' ')
19
Textos em várias linhas
20
Operações com Strings
• Operações:
– + : Concatenação
– * : Replicação
– str[i]: retorna o
>>> st = ‘curso '>>> st + ‘python'‘curso python'
>>> st = ‘Casa’>>> st*3‘CasaCasaCasa'
– str[i]: retorna o caracter de índice ida string str;
– str[inicio:fim] retorna uma substring de str
21
>>> st = 'arquivo.mp3'>>> st[0]'a'>>> st[-1]'3'>>> st[-4]'. '
>>> st = 'arquivo.mp3'>>> st[2:]'quivo.mp3'>>> st[0:-4]'arquivo'>>> st[-3:]'mp3’
Teste no interpretador
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__',
22
'__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']
Métodos de Strings
• split(char)
– Retorna uma lista com os elementos separados por char >>> a = '1+2+3+4+5+6'
>>> a.split('+')
• len(str)
– Retorna o tamho da string str
>>> a = 'curso de python'>>> len(a)
• strip(chars)
– Retorna uma string onde os chars da direita e da esquerda foram removidos
23
>>> a.split('+')['1', '2', '3', '4', '5', '6']
>>> a = ' !!! STRING DE RETORNO! !! ! !'>>> a.strip(' !')'STRING DE RETORNO'
>>> len(a)15
Métodos de Strings
• find(substring)
– Retorna a posição da primeira ocorrência da substring.
Caso não seja encontrada, retorna -1>>> a = 'curso de python'>>> a.find('de')
>>> a = 'curso de python'>>> a.find('casa')
• lower(), upper()
– Retornam uma string em minúsculo/maiúsculo
24
>>> a.find('de')6
>>> a.find('casa')-1
>>> a = 'CuRsO dE pYtHoN!'>>> a.lower()'curso de python!'
>>> a = 'CuRsO dE pYtHoN!'>>> a.upper()'CURSO DE PYTHON!'
Métodos de Strings
Procurem mais métodos de string com
25
métodos de string com dir() e help()
Exercícios
• 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 métodos de string usando dir()
26
Exercícios
• 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!#########'
27
string = '!! ! a;b;c;d;e;f;gh!#########'print string.strip(' !#h').split(';')
Exercícios
• A partir da string “ring ring! - hello!“ gere o resultado:
– “hello!”
string = 'ring ring! - hello!'print string[string.find('hello'):]
28
print string[string.find('hello'):]
string = 'ring ring! - hello!'print string[13:]
Exercícios
• 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”
29
string = 'abacate azul'print string.replace('a', '4')
Difícil?
É Naadaaaaa
30
Desvio Condicional
if condicao:
comandos
elif condicao:
comandos
else:
>>> a = input('Digite um numero: ')Digite um numero: 4>>> if a%2 == 0:... print “Par”... else:
else:
comandos
31
... else:
... print “Impar”
Par
Não precisa de (parêntesis), mas podem ser usados
Desvio Condicional
• Não existe SWITCH/CASE, quando é necessário várias comparações, usamos elif’s ou dicionário (explicado mais à frente)
• Pode ser escrito em uma linha:
– SETRUE if condição else SEFALSE– SETRUE if condição else SEFALSE
32
>>> numero = input('entre com um numero: ')entre com um numero: 5>>> print 'par' if numero%2 == 0 else 'impar'impar
Exercícios
• Leia dois números e imprima o maior deles
• Leia uma letra, se for “M” imprima “Masculino, se for “F” imprima “Feminino”, senão imprima “Sexo invalido”.
33
DICA:
variavel = input() #Para números
variavel = raw_input() #Para strings
Exercícios
• Leia dois números e imprima o maior deles
numero1 = input('Numero 1: ')numero2 = input('Numero 2: ')if numero1 > numero2:
print numero1
34
print numero1elif numero1 < numero2:
print numero2else:
print 'iguais'
Exercícios
• Leia uma letra, se for “M” imprima “Masculino, se for “F” imprima “Feminino”, senão imprima “Sexo invalido”.
letra = raw_input('Sexo: ')if letra == 'M':
print 'Masculino'
35
print 'Masculino'elif letra == 'F':
print 'Feminino'else:
print 'Sexo invalido'
Loops
• O While é quase igual às outras linguagens:
while condição:
comandos
else:
>>> x = 0>>> while x < 10:
print x,x += 1
else:
comandos
36
0 1 2 3 4 5 6 7 8 9
Loops
• O While é quase igual às outras linguagens:
while condição:
comandos
else:
>>> x = 0>>> while x < 10:
print x,x += 1
ELSE no WHILE
?????????????
else:
comandos
37
0 1 2 3 4 5 6 7 8 9
Loops
• O else só é executado se não ocorreu nenhum break durando o while, ou seja, se o while parar pela condição.
>>> numero = input('entre com um numero: ')entre com um numero: 11>>> x = 2>>> while x < numero: Úúúuuuuhhhh
38
>>> while x < numero:if numero%x == 0:
print 'nao é primo'break
x += 1else:
print numero, 'é primo‘
11 é primo
ÚúúuuuuhhhhSHOW!
Loops
• O for em python é parecido com o foreach de outras linguagens:
for variavel in sequencia:
comandos
>>> for letra in 'string':print letracomandos
else:
comandos
39
print letra
string
Loops
• Trabalhando com listas: [...].
>>> for elemento in [1,3,3,6,4,2,7]:print elemento*2
26
40
66128414
Loops
• a função range(numero) retorna uma lista de números
>>> for i in range(10):print i,
0 1 2 3 4 5 6 7 8 9>>> for i in range(5,10):
>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5,10)
41
>>> for i in range(5,10):print i,
5 6 7 8 9>>> for i in range(0,10,2):
print i,
0 2 4 6 8
>>> range(5,10)[5, 6, 7, 8, 9]
>>> range(0,10,2)[0, 2, 4, 6, 8]
Exercícios
• Imprima a tabuada de multiplicação de um número digitado pelo usuário;
• Some os números impares de 0 a 100;
• Imprima uma frase digitada pelo usuário, continue lendo e imprimindo até o usuário digitar SAIRimprimindo até o usuário digitar SAIR
42
Exercícios
• Imprima a tabuada de um número digitado pelo usuário
• Imprima a soma dos números impares de 0 a 100
numero = input('Entre com um numero: ')for i in range(11):
print numero, 'x', i, '=', numero*i
• Imprima a soma dos números impares de 0 a 100
43
soma = 0for i in range(1, 100, 2):
soma += iprint soma
Exercícios
• Imprima a tabuada de um número digitado pelo usuário
• Imprima a soma dos números impares de 0 a 100
numero = input('Entre com um numero: ')for i in range(11):
print numero, 'x', i, '=', numero*i
• Imprima a soma dos números impares de 0 a 100
44
soma = 0for i in range(1, 100, 2):
soma += iprint soma
sum(range(1,100,2)
Exercícios
• Imprima uma frase digitada pelo usuário, continue lendo e imprimindo até o usuário digitar SAIR
while True:frase = raw_input('Frase: ')if frase == 'SAIR': break
45
if frase == 'SAIR': break
print 'FRASE: ', frase
Não tem problema usar “While
True” em python! No exemplo o “While True” evita repetição de
código!
Funções
• Para criar uma função:
– def nome_da_funcao( parametros ):
• Para retornar algum valor, usamos o return
• Uma função não precisa retornar algo.• Uma função não precisa retornar algo.
• Não existe sobrecarga
46
>>> def fat(n):return 1 if n < 2 else fat(n-1)*n
>>> fat(5)120
Funções
• Valor padrão de um parâmetro.
• Substitui a sobrecarga e evita repetição de código
def funcao(a, b=5):print 'a =',aprint 'b =',b
public void funcao(int a) {System.out.println('a = '+a);System.out.println('b = 5');
}
47
}
public void funcao(int a, int b) {System.out.println('a = '+a);System.out.println('b = '+b);
}
>>> funcao(2)a = 2b = 5>>> funcao(2,6)a = 2b = 6>>> funcao(b=9, a=4)a = 4b = 9
Exercícios
• Faça uma função para calcular o fatorial de um número (função não recursiva)
• Faça uma função para verificar se um número é primo ou não
48
Exercícios
• Faça uma função para calcular o fatorial de um número (função não recursiva)
def fatorial(n):resultado = 1
49
resultado = 1for i in range(2, n+1):
resultado *= ireturn resultado
Exercícios
• Faça uma função para verificar se um número é primo ou não
def primo(n):for i in range(2, n):
if n%i == 0:return False
50
if n%i == 0:return False
return True
Listas
• Não existe vetores em Python, nós usamos listas
• Uma lista guarda uma seqüência de itens
• São identificadas por colchetes “[ ]”
>>> lista = [1,2,3,4,5]
>>> print lista
• Os itens podem ser acessados como um vetor
51
>>> print lista[1, 2, 3, 4, 5]
>>> lista[0]1>>> lista[4]5
Listas
Inserindo elementos
• append( obj )
– Insere o objeto no fim da lista
>>> lista = [1,2,3]>>> lista.append(0)>>> lista[1, 2, 3, 0]
• insert( posição, obj )
– Insere o objeto na posição especificada
52
>>> lista = [1,2,3]>>> lista.insert(1, 'objeto')>>> lista[1, 'objeto', 2, 3]
Listas
• remove(obj)
– Remove o objeto da lista
• pop(posição)
>>> lista = ['a','b',3]>>> lista.remove('b')>>> lista['a', 3]
Removendo elementos
• pop(posição)
– Remove e retorna o objeto da posição especificada. O pop() sem parâmetros retira o último elemento
53
>>> lista = ['a', 2, 'b', 4, 'c']>>> lista.pop(0)'a'>>> lista[2, 'b', 4, 'c']>>> lista.pop()'c'>>> lista[2, 'b', 4]
Listas
Outros métodos
• count( obj )
– Retorna a quantidade de elementos “obj” da lista
• index( obj )
– Retorna a posição do “obj” na lista– Retorna a posição do “obj” na lista
• reverse()
– Inverte a lista colocando os elementos ao contrário
• sort()
– Ordena a lista
54
Usem dir() e help()
Tuplas
• Definidas por parêntesis “( )” ou objetos divididos por “,”
• Parecidos com listas, mas são imutáveis
>>> tupla = (1,2,3)>>> tupla(1, 2, 3)
>>> tupla = 1,2,3>>> tupla(1, 2, 3)
• Parecidos com listas, mas são imutáveis
55
>>> lista = [1,2,3]>>> lista[0] = 4>>> lista[4, 2, 3]
>>> tupla = (1,2,3)>>> tupla[0] = 4Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>tupla[0] = 4
TypeError: 'tuple' object does not support item assignment
Dicionários
• O programador pode definir a chave do item
• Representados por chaves “{ }”
>>> dicionario = {'chave' : 'item', 2 : 4}>>> dicionario['chave']'item'
56
'item'>>> dicionario[2]4
Use dir() e help()
Dicionários
• Inserir item
– dicionario[chave] = obj
• Remover item
– dicionario.pop(chave)• Se não encontrar a chave retorna erro• Se não encontrar a chave retorna erro
– dicionario.pop(chave, retorno)• Se não encontrar a chave retorna o valor de retorno
• Remover todos itens
– dicionario.clear()
57
Dicionários
• Acessar item
– dicionario[chave]• Se a chave não existir retorna erro
– dicionario.get(chave)• Se a chave não existir retorna None• Se a chave não existir retorna None
– dicionario.get(chave, retorno)• Se a chave não existir retorna o valor de retorno
• Verificar se existe item
– dicionario.has_key(chave)
58
Exercícios
• Função para calcular série Fibonacci até n
• Imprimir quantos números são 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 dicionário
• Função que receba uma string é imprima em escada, ex:• Função que receba uma string é imprima em escada, ex:
– T
– TE
– TES
– TEST
– TESTE
59
DICA: Use a função len(objeto) para pegar o tamanho da string
Exercícios
• Calcular série Fibonacci até n
def fibonacci(n):fibs = [0, 1]for i in range(n-2):
60
for i in range(n-2):fibs.append(fibs[-2] + fibs[-1])
return fibs
Exercícios
• Verificar quantos números são 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 = 0for item in lista:
61
for item in lista:if item > 10:
soma += 1print soma
Exercícios
• Leia o nome e a nota de 5 alunos e guarde em um dicionário
notas = {}for i in range(5):
nome = raw_input('nome: ')
62
nome = raw_input('nome: ')nota = input('nota: ')notas[nome] = nota
print notas
Exercícios
• Função que receba uma string é imprima em escada, ex:
– T
– TE
– TES
– TEST
def funcao(palavra):for i in range(len(palavra)):
print palavra[:i+1]– TEST
– TESTE
63
print palavra[:i+1]
64
Contatos
• Márcio Palheta
– @marciopalheta– @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 exercícios:
– http://www.python.org.br/wiki/ListaDeExercicios
• Documentação do python:
– http://docs.python.org/
66
Top Related