• Nenhum resultado encontrado

Aula Python

N/A
N/A
Protected

Academic year: 2021

Share "Aula Python"

Copied!
124
0
0

Texto

(1)

Péricles Miran

Mini-Curso De Introdução a Python

1

(2)

O que é Python ?

(3)

Por que Python

(4)

Por que é fácil

Semelhança com pseudo-código.

(5)

Hello World Classíco

(6)

Hello World Classíco

.... Em Python ....

(7)

Por que Python

É fácil

(8)

Canivete suíço

Tipagem dinâmica

Biblioteca padrão completa

Multi-paradigma

Multi-plataforma

Facilmente extensível

Free Software (GPL)

(9)

Por que é poderoso

Python para Web

Web é presente -> Futuro!

Django (http://www.django.org)

Zope (http://www.zope.org)

Plone (http://www.plone.org)

Turbogears (http://www.turbogears.org)

(10)

Web

(11)

Web

(12)

Por que é poderoso

Python para gestão empresarial

PyGTK (http://www.pygtk.org)

PyQT (http://qt.nokia.com)

(13)

Aplicativos Desktop

(14)

Aplicativos Desktop

(15)

Python é multi-plataforma

Python em dispositivos móveis

(16)

Android (ASE)

(17)

Por que é poderoso

NetworkX

(18)

Python é multi-plataforma

PyMT

Python Multi Touch

Especialmente criado para ambientes multi-touch

(19)

PyGame e Jogos

(20)

Aplicativos Desktop

(21)
(22)
(23)

Python entre as 10 + !

(24)

O que é python ?

É fácil

É poderoso

(25)

O que é python ?

É fácil

É poderoso

É poderoso

(26)

Fácil e poderoso!

lista = ['laranja', 'banana', 'uva']

lista.sort()

 

for item in lista:

(27)

Hun, sei o que é Python!

(28)

Instaladores

Interpretador Python disponível para diversas

plataformas.

Windows, Unix, Linux, etc.

Para usuários Windows, é necessário o download do SDK!

(29)
(30)

Instaladores (Windows)

Não esqueça de adicionar o caminho da instalação

no PATH do sistema!

;C:\Python2x

>>> 2 + 3

>>> 5 Windows 7 Approved!

(31)

Instaladores

E enquanto no Linux e Unix ?

Estas distribuições já disponibilizam para você de forma nativa!

Prompt do python “>>>”:

Para sair:

No Unix, digite CONTROL-D

(32)

Vamos executar!

...E agora como eu crio meu

programa em python ?

(33)

Rodando Programas no Unix

Os arquivos python tem finalização .py!

Você pode usar qualquer editor de texto para codificar o seu código!

No Windows : Clássico Notepad ou o IDLE...

No Mac OS/Linux: VI, TextEdit, GEdit, TextMate ...

%python filename.py

Para tornar o arquivo *.py executável:

#!/usr/bin/python

Para aceitar textos com acentos e caracteres especiais:

(34)

-*-Ambiente IDLE

Ambiente Shell de

desenvolvimento básico

Editor de texto com

highlighting e identação

automática para criação

de arquivos python

Comandos para alterar

propriedades e execução

de programas

(35)

Desenvolvimento

... E ambientes de

(36)

Eclipse

Aptana PyDev

Plugin para

desenvolvimento de

aplicações Python para o

Eclipse

Suporte para Debug,

UnitTests.

(37)

Netbeans

Netbeans >= 6.5

Plugin para

desenvolvimento de

aplicações Python para o

Netbeans

Suporte para Debug,

UnitTests, etc.

(38)

ActivePython

ActiveState Python

Distribuição Python

completa, instale e execute!

Diversos plug-ins e suporte

já ao Python 3.0

(39)

EasyClipse

Distribuição

customizada do

Eclipse!

Distribuição pronta para

uso, inclusive com o

ambiente para Python!

Pydev já vem instalado !

(40)

PyCharm

IDE em Python

customizada com

suporte incluso ao

Django

Excelente IDE para

desenvolvimento WEB

30 dias gratuito

(41)

Outros Editores

Notepad++, GEdit, VIM, Emacs, IDLE, Eric IDE,

TextMate, etc.

(42)

Chega de conversa...

É hora de por a mão na

massa!

(43)

Por onde começo ?

(44)

... em Python ...

print

“Hello World”

(45)

Tipos e operações

Vamos ver um trecho de código em

Python!

(46)
(47)

... entendendo o código...

Atribuição utiliza

=

e comparação utiliza

==

(48)

... entendendo o código...

Atribuição utiliza

=

e comparação utiliza

==

(49)

... entendendo o código...

Números:

+ - * / %

tem suas funções características

+ pode ser usado como concatenação de Strings;

(50)

... entendendo o código...

Números:

+ - * / %

tem suas funções características

+ pode ser usado como concatenação de Strings;

(51)

... entendendo o código...

Operadores lógicos são

palavras

e não símbolos (||,

&&)

(52)

... entendendo o código...

Operadores lógicos são

palavras

e não símbolos (||,

&&)

(53)

... entendendo o código...

(54)

... entendendo o código...

(55)

... entendendo o código...

E se você quiser receber uma entrada diretamente

do usuário ?

(56)

... entendendo o código...

A

primeira atribuição

em uma variável também é

responsável por

cria-lá

.

Os tipos das variáveis não precisam ser informados;

(57)

... entendendo o código...

A

primeira atribuição

em uma variável também é

responsável por

cria-lá

.

Os tipos das variáveis não precisam ser informados;

(58)

... Usando o Shell

!

!"#$%&'&'"()**+,-! .#/#'&01)/'2$3&/4#56)"'7&4&'481&%&"')'#1/2091&"'%)' 94'&0:)1&'0#"1#');)791#/'&'7&4#$%&'<%2/=>'?0">@'A9%&' )4'.B1(&$'8'&0:)1&C ! DDD%2/+<"1/2$E'%)'1)"1)=-! F19%&'"&0/)'"1/2$E"CD ! DDD

(59)

Comentários

Comentários começam com #

Convenção: Você pode definir uma “documentação” em string como primeira linha de qualquer nova função que você definir.

(60)

Conhecendo a linguagem...

!

!"#"$%&#'(%)$"*+&*%),-! .)/"0)$"0&/%&*%),"+" !

12&0,3-! 444"*5*67 ! 444"*5*8%&(%&9 ! 444 ! :-#%&0&/%&*%),"+";*/<-*&2)(%&*$"(%= !

>&*?@)(&#*0@+"#*-*%),-;*@(&*@0"*

A@/B<-! 12&0,3-! 444"*5*C)/%D*6=7*E*1FFGHHH ! 444"*5*)/%C6=7D

(61)

Conhecendo a linguagem...

!

!"#$%&%'(")

! *+,-.,))/0-1"#$%&%'+,-1"-20.,) !

3%4%

! 052-%-6-78 !

9:2;,5

! %-6-7 ! *+,-.,))/0-#,<%51,)-1"#$%&%204,)-=>?@40,)AB !

3%4%

! C$D,-5-6-5"E-C$D,=B8 !

9:2;,5

! 5-6-C$D,=B

(62)

Tipos Básicos

Inteiros

(padrão para números)

Divisão entre inteiros, resposta um inteiro!

Inteiros Longos

L ou l no final. (Convertido automaticamente com precisão de inteiros > 32 bits)

Floats

(ponto flutuante)

1.23, 3.4e-10

Complexas

(63)

Tipos Básicos

Representação numérica

Representação de dígitos com/sem formatação de string

Divisão clássica / base

Uso dos operadores // e /

Operações em nível de bit

1 << 2 , 1| 2 , 1&2

Notações hexadecimal / octal

2 , 0x10 , 0100 , oct(64), hex(255) , int(‘200’), int(‘0100’,8) , int(‘0x40’,16)

(64)

Tipos Básicos

Strings

!

“abc” ou ‘abc’

!"#$%&'&($)*"+",-.%

"#$%&'& ()*&+,&$-(.(/01( /01 2.3$+&45. /061 ).3$+&$5&785"9 /:1 )"7$+&45. /:61 )"7$+&$5&785"9 /661 785"9&;$<=.>$&':+.?.+@3(7"A /B61 #7?.+.3>. /0:1 #7?.+.3>. /7%1 785"9#"#.&#.&$<=.>$% /7%&3$>1 #7?.+.3,"&#.&$<=.>$% !!!+,(-.#/&0&+1()2%3444/ '()*%

(65)

Comandos básicos

Alguns comandos básicos que podem ajudar no ínicio!

dir(element) - todos os atributos e métodos que estão associados a elemento.

type(element) - Descobrir o tipo do objeto!

import - importe módulos para uso no seu código!

!

!"#$%&'()$*"+),-$.*/0&/%($.

! 1$"'()$*"#$%&' !20/3,&'*&,)$*4,/*/.&56/%*/"*#%5"/5%$* 7-$3$*($*"+),-$ !8$%('*65.96/-*$7:/&$.*/*./,.*%/.#/3&56$.* ";&$)$. ) %$" ) %$" ) %$"

(66)

Exercício 01

Faça um programa que peça 2 números e um real.

Calcule e mostre:

O produto do dobro do primeiro com a metade do segundo

A soma do triplo do primeiro com o terceiro

(67)

Atribuição

... Vamos entender como funciona

atribuição!

(68)

Atribuição

Atribuição de uma variável em Python significa criar um rótulo

para armazenar uma referência para algum objeto.

Atribuição cria referências e não cópias!

Inferência do tipo da referência baseado no tipo de dado atribuído

A referência é deletada por meio de Garbage Collection

Quando o objeto deixa de ser referenciado por nenhum outro rótulo(variável).

(69)

Atribuição

Lembre-se que Python a tipagem é dinâmica!

Declarar variáveis sem atribuí-las irá levantar um erro!

(70)

Atribuição

Você pode inicializar várias variáveis de uma só vez!

x = y = z = 2.0

Rótulos de variáveis são Case Sensitive e não podem iniciar com número. Números, letras e underscores são permitidos!

bob bob_2 _bob _2_bob bob_2 BoB

(71)

Listas, Strings e Tuplas

(72)

Listas, Strings e Tuplas

Todos os três são Sequências!

Podem ser indexados por algum valor ordinal posicional

Todas as operações apresentadas aqui nesta seção podem ser aplicadas em todos os tipos de sequência

Listas

li = [1,2,3, ‘abc’]

Tuplas

li = (23, ‘abc’, 4.56, (2,3), ‘def’)

Strings

(73)

Listas, Strings e Tuplas

Manipulando sequências!

Pelo índice a partir de 0 Ex: ti [0]

Índices podem ser positivos ou negativos! Ex: ti[1] (esq.) ti[-4] (dir.)

Fracionamento e matrizes!

li[1:3] L[1:] matrix = [[1,3,4] , [3,5,6] , [7,8,9]]

Operador in

retorna um booleano. Checa se um valor está em uma sequência!

(74)

Listas, Strings e Tuplas

!

!"#$%#&'&%()##%*+,&"$)*#

! -*+"()&.,#"$"/,#&)&*)0%$"/,# !!!"#$#%&'(')'*'+,#!"#$%&'()*%)+$,-% !!!"%-, & !!!"%(, ) !!!"%.&, + !!!"%.), ) !!!"%&/, %(')'*'+, !!!"%/), %&'('), !!!"%&/*/(,#!%"#.,"$*()()/%,,(0)"(+.-%1,.)/2+%3*()*.)4).5)4 %('*, !!!"%//.&, %+'*')'('&,#!/%,,()3.6%-$7()$37.#-.)%),.8293"$%

(75)

Operacões em Listas

Operador + , *

a = “Hello” + “ World” (concatenação)

[3] * 4 (repetição)

Operador len() e append()

len() - retorna um inteiro com o tamanho da sequência!

append() - adiciona um elemento ao final da lista!

Atribuição

list[0] = ‘3’

(76)

Operacões em Listas

Qual será o valor de b ?

>>> a = [1,2,3]

>>> b = a

>>> a.append(4)

(77)

Operacões em Listas

Qual será o valor de b ?

Surpresa!

Dados do tipo listas, dicionarios e pré-definidos pelo usuário são mutáveis! >>> a = [1,2,3] >>> b = a >>> a.append(4) >>> print b >>> b = [1,2,3,4]

(78)
(79)

Operacões em Listas

Para fazer cópias de listas

a = b[:] (2 cópias independentes)

a = b (os 2 referenciam o mesmo objeto)

Qual a diferença entre listas e tuplas ?

Listas são mutáveis e Tuplas imutáveis!

l = [1,‘abc’,4] t = (1,‘abc’,4,5)

Atribuição em listas e tuplas

list[0] = ‘3‘ ok!

(80)

Tuplas x Listas

Para converter entre listas e tuplas ?

!

!"#$%&

! ! /9&%:&-/%/4".562/)"#$-;</#%(%/)(%.&42(,%(/2")(2&/)*#2&/ -,/)"#$%& !!!"#$#%&'(')'*'+, !!!-./012"3 2&'(')'*'+3 !!!045-2-./012"33 %&'(')'*'+, !!!610/2-./013#!"#$%&%'#"())

(81)

Exercício 02

!

!"#$%&%'()*+*

! ,(-.$#/0#)1-)-#23'4.#)5'-.1-6)7#$'8171-)7#9 !

:;6*6<6=6>6?6@6A6B6C6*;6**6*<6*=6*>6*?D

! E4.#$815()7#)*)1)C ! E4.#$815()7#)B)1)*= ! FG0#$(-)H1$#-! FG0#$(-)&0H1$#-! I(7(-)(-)0G5.'H5(-)7#)<6)=)#)> ! J'-.1)$#8#$-1 ! K1LM()#4.$#)1)-(01)7()'4.#$815()7#)*;)1)*?)H#5() '4.#$815()7#)=)1)C)#0)N5(1.O

(82)

Métodos muito usados

append(), insert(), extend(), del()

min(), max()

index(), count(), remove(), pop()

reverse() , sort()

(83)

Strings

Também uma sequência e é Imutável!

“42” + 1 (erro!) Use “42” + str(1)

float(), int() -> string para numéro

Atribuição

S = ‘spam’ S[0] = ‘x’ ERRO!!!

Strings são imutáveis!

(84)

Métodos mais usados

find(), replace(), join(), split()

isdigit(), islower(), strip(),

startswith(), upper(), lower()

(85)

Exercício 03

Crie uma lista com o nome de 10 pessoas e sorteie uma pessoa, depois embaralhe novamente e sorteie outra (sem repetição)

Dica: help(random) - módulo para

aleatoriedade.

Faça um programa que permita ao usuário digitar o nome e em seguida mostrar ao usuário de trás pra frente

somente em letras maiúsculas.

Dica: Procure pela documentação do

(86)

Dicionários

(87)

d = {“user” : “Pericles " , “password”: 2342}

Dicionários

Estrutura de dados em forma de coleções onde os items são armazenados e buscados pela chave em vez do deslocamento posicional.

Chaves podem ser quaisquer objetos do tipo imutável

Valores podem ser de qualquer tipo

Um dicionário pode armazenar diferentes tipos de valores e é mutável!

Criando e modificando dicionários!

(88)

Dicionários

Dicionários não são ordenados!

Uma nova chave pode aparecer em qualquerr lugar

Algums métodos:

has_key(‘eggs’) , clear() , del d[‘key’] , keys(), values(), items(), get() , update()

(89)

Arquivos

(90)

Arquivos

Apenas uma linha para abrir um arquivo!

file = open(“data”, ‘r’) tipos: r, a, w

Alguns métodos para operações em arquivos:

file.read(), readline(), readlines(),

file.write(), writelines(),

(91)

Booleanos

(92)

Expressões lógicas

True e False são constantes em Python

False : 0, None, [] , {} , 0.0

True: Valores Numéricos exceto 0, objeto não vazios

Operadores de comparação: ==, != , < , <=, etc.

X == Y ( efetua teste de equivalência de valor)

(93)

Expressões lógicas

None é similar ao NULL em linguagem C

L = [None] * 100 (declara uma lista de 100 items None )

Operações com or e and

not -> inversão lógica (true -> false , false -> true)

and e or (&& e II)

isinstance(element,type)

(94)
(95)
(96)

Fluxo de Controle

Várias expressões Python para controlar o fluxo do programa. Todos eles fazem uso de testes condicionais booleanos.

ifs, else

(97)
(98)
(99)

Instruções while

Você pode usar o comando break para sair do loop mais próximo que a envolve.

Você pode usar o comando continue para pular para o ínicio do loop mais próximo que a envolve e pular para a próxima

iteração.

Você pode usar o comando pass quando você não quer que se faça nada (instrução vazia)

(100)

Instruções for

Loops for iteram sobre uma sequência de items (listas, tuplas, string ou quaisquer outros objetos cuja a linguagem considere como um “iterator”)

Várias maneiras de iterar sobre um conjunto de items!

Também possui o bloco else quando se sai normalmente do loop (similar ao while)

Função muito usada nos loops for: range()

range() - Retorna uma lista de números que varia de 0 a ao número passado como parâmetro.

(101)
(102)

Compreensão de listas

(103)

Compreensão de listas

Funcionalidade muito poderosa da linguagem Python

Gera uma lista nova aplicando uma função para cada elemento da lista original.

Muito usado por programadores Python! (Economia de código!)

A sintaxe da compreensão de lista usa-se de palavra-chaves:

[expression for name in list]

!

!"#$%&&'()"*+&*,-(./(

! 01.2"'*(3$"%./*4"#$%&(()"*+&*,-(./(5*4%-/*,-(./(*+&*6"%#/* 674-,*&*%7$-+/8*9*3("*+&*4"#$%&(()"*+&*,-(./(*:*;&#* 4"#3#*&#*#/.&#7.-4/8 ! 0"%*&<&#$," ! =*>*?<@*A*<*-'*?B*888*CDD ! E*>*?<*F*<*-'*=*/'+*<*&G&'D ! H#*$1.2"'*.&#"( ! III(*>*J<KKL*6"%*<*-'*%/'M&NOBPQ ! III#*>*J<*6"%*<*-'*(*-6*<RL*>>*BQ

(104)

Compreensão de listas

Permite também o uso de filtros (deteminam se uma determina expressão deve ser executada sobre um membro da lista)

[expression for name in list if filter ]

!

!"#$%&&'()"*+&*,-(./(012

! 3.-,-4/%*+-5-"'6%-"(7*&8&#$,"9 ! :::+;<=>",?=9@AAAA7=5&,./=9BCAAA7=D-,E8=9FGAAA7 =?E(5/=91AAAH ! :::$"((-I-,-+/+&(J%-5"*;*K5/%*?"%*5/%*-'*+*-?*+K5/%L* M*NAAAAL ! :::$"((-I-,-+/+&(J$"I%&*;*K5/%*?"%*5/%*-'*+*-?* +K5/%L*M*1AAL ! O#*(.%-'>( ! :::*'"#&*;*=P'P'*QQ*OQP'QQ(Q.QP'P'QP'/* ?Q%P'P'/QQQ(P'&*P.-QQ'RQQ/Q*Q(QQEP'QSP'&QQP 'P'Q-P'%QQ/QT***P'QQ*P'P'P'P'= ! :::==TS"-'0K8*?"%*8*-'*'"#&*-?*8U;=Q=*/'+*8U ;=P'=L2T(.%-$02

(105)

Exercício 05

Faça um programa que imprima na tela apenas os números ímpares entre 1 e 50 (usando compreensão de listas!)

!

!"#$%&%'()*+*

! ,#-.()/01)2'341)5#)-(0#3)5#)%2133#3)(3)6/1'3)#347() #3%$'4(3)-()#34'2()/-5#$2'-#)89-(0#:(/4$(:-(0#;<)#) 1=($1)0/5(/>3#)()?15$7()?1$1)@10#2@13#+)A#5#>3#)/0) 2'341)%(0)(3)-(0#3)4(5(3)#0)@10#2@13#+ ! BBB2'341:-(0#:%2133#3CD94#21:?$'-%'?12;E;01?1:5 #:5'3?(3'4'F(3;E;%2133#:-#=(%'(:?#315(;E;1%/0/21 5($;E;G'0:51:2'341:5#):5#:%2133#3:5(:#"#$%'%'(;H !

I'%1J

! K3#)13)G/-LM#3)34$+4'42#)#)34$+3?2'4 ! N#?(341O ! $#3?(341)C)DPP+Q('-8DR+4'42#8<)G($)R)'-)SH<)G($)S)'-) D"+3?2'48P:P<)G($)")'-)2'341:-(0#:%2133#3HH

(106)

Funções

(107)

Definindo Funções

(108)

Definindo Funções

(109)

Definindo Funções

(110)

Definindo Funções

Definição da função inicia com “def ” Nome da função Argumentos

(111)

Definindo Funções

Definição da função inicia com “def ” Nome da função Argumentos

Identação

“return” indica o retorno da função

(112)

Definindo Funções

Definição da função inicia com “def ” Nome da função Argumentos

Identação

“return” indica o retorno da função

(113)

Chamando uma função

>>> def myfun(x, y):

return x * y

>>> myfun(3, 4)

12

(114)

Parâmetros com valores padrões

Cada parâmetro pode ter um valor padrão.

Utilizado quando um parâmetro é omitido na chamada da função

def myfun(x, y = 0.3, prompt = True): res = x * y

if prompt:

print “Resposta é %f”, res

(115)

Parâmetros com valores padrões

def myfun(x, y = 4, prompt = True): res = x * y

if prompt:

print “Resposta é %i”, res

return res

Esta função pode ser invocada de várias formas:

>>> myfun(3)

Resposta é 12 12

>>> myfun(x=3, prompt = False)

12

>>> myfun(5, 2, False)

(116)

Valor de retorno

Toda função em Python retorna alguma valor;

Mesmo funções que não possuem a cláusula return.

Funções que não possuem return retornam None.

None é uma constante especial definida na linguagem;

Similar a NULL, void, ou nil em outras linaguagens;

(117)

Valor de retorno

Uma função pode retornar mais de um valor

>>> def teste(): x = 1 y = 2 z = 3 return x, y, z >>> x, y, z = teste() >>> ret = teste() >>> ret (1, 2, 3)

(118)

Algumas funções especiais

(119)

Funções map, reduce e filter

Função map(func, seq)

Função interna que aplica uma função func a cada item de um objeto sequência (seq) e retorna uma lista com os resultados da chamada da função.

Função filter(func, seq)

Função interna que aplica uma função filtro func a cada item de um objeto sequência (seq) e retorna uma lista com os resultados que satisfazem os critérios da função de teste seq.

(120)

Ordenação

Mas um programador Pythonico, ainda faria mais eficiente!

(121)

Python é muito poderoso!

Não precisa reinventar a roda! Molde-a para adaptar ao seu

problema!

A documentação de Python é bastante vasta e há muitas funcionalidades prontas!

(122)

Chegamos ao fim! =D

(123)

Referências

I Workshop CINLUG de Python (Ministrado no CIN)

http://www.cin.ufpe.br/~cinlug/files/workshop-python.1.pdf

http://www.cin.ufpe.br/~cinlug/files/workshop-python.2.pdf

Mini-Curso de Introdução a Python (Avaty Tecnologia e Info.)

http://www.avaty.com.br/artigos/CURSO-PYTHON.pdf

(124)

Hello, I am Python!

Péricles Miranda

Referências

Documentos relacionados

•   O  material  a  seguir  consiste  de  adaptações  e  extensões  dos  originais  gentilmente  cedidos  pelo 

Se a pessoa do marketing corporativo não usar a tarefa Assinatura, todos as pessoas do marketing de campo que possuem acesso a todos os registros na lista de alvos originais

Após 96 horas, houve um aumento no consumo, com o aumento de 100 para 160 ninfas, que não diferiu significativamente da densidade 220; com 280 ninfas disponíveis houve um

Centro Caraívas Rodovia Serra dos Pirineus, Km 10 Zona Rural Chiquinha Bar e Restaurante Rua do Rosário Nº 19 Centro Histórico Codornas Bar e Restaurante Rua Luiz Gonzaga

Assim, o presente estudo busca revisar as causas e consequências da Síndrome de Burnout para a saúde dos profissionais de enfermagem no ambiente hospitalar, com

Deste modo, em Franca o processo de reestruturação produtiva fez-se sentir menos pela concentração de capital, que engendrasse a introdução de inovações tecnológicas, e mais

 Esta ,alHa superior 1 ligada a nove caos de descida de core nu b;M ,,! Gue condu&gt;e, a descarga el1trica at1 a cai4a de recep-o onde a partir dela ser$ utili&gt;ado cao

Essa última é usada tanto na escrita quanto na oralidade, geralmente em situações mais específicas como nas defesas jurídicas, nos discursos em congressos e em