Você está na página 1de 87

Python Bsico

Marcel Pinheiro Caraciolo


Python Aula 03

Por onde comeo ?


... Criando nosso primeiro Hello orld !

Python Aula 03

Hello

orld

... "hello #orld$ % Python & '(a)a* C* PHP* Pascal+

Python Aula 03

... em Python ...

print -Hello

orld.

/0emplo1.py
Python Aula 03

2ipos e opera3es
4amos )er um trecho de c5di6o em Python!

Python Aula 03

C5di6o Base

Python Aula 03

... entendendo o c5di6o...


==

9 Atri:ui;o utili<a = e compara;o utili<a

Python Aula 03

... entendendo o c5di6o...


==

9 Atri:ui;o utili<a = e compara;o utili<a

Python Aula 03

>

... entendendo o c5di6o...


9 9

C % D E F tem suas Gun3es 9 @AmerosB caracterHsticas


C pode ser usado como concatena;o de Itrin6sJ F pode ser usado para Gormatar Itrin6s Kassim como em CL.

Python Aula 03

... entendendo o c5di6o...


9 9

C % D E F tem suas Gun3es 9 @AmerosB caracterHsticas


C pode ser usado como concatena;o de Itrin6sJ F pode ser usado para Gormatar Itrin6s Kassim como em CL.

Python Aula 03

10

9 Mperadores l56icos s;o pala)ras e n;o


sHm:olos KNN* OOL
and* or* not

... entendendo o c5di6o...

Python Aula 03

11

... entendendo o c5di6o... 9 Mperadores l56icos s;o pala)ras e n;o


sHm:olos KNN* OOL
and* or* not

Python Aula 03

12

P o comando :sico para -impress;o. 9 print na tela

... entendendo o c5di6o...

Python Aula 03

13

P o comando :sico para -impress;o. 9 print na tela

... entendendo o c5di6o...

Python Aula 03

1,

9 / se )ocQ Ruiser rece:er uma entrada


diretamente do usurio ?

... entendendo o c5di6o...


9 raw_input()

- retorna uma string !

>>> raw_input(Digite um valor)

/0emplo1
Python Aula 03

11

9 A primeira atri:ui;o em uma )ari)el


tam:Pm P respons)el por cria%l.

... entendendo o c5di6o...


9 9

Ms tipos das )ari)eis n;o precisam ser inGormadosJ Python desco:re o tipo da )ari)el por conta pr5pria!

Python Aula 03

17

... entendendo o c5di6o... 9 A primeira atribuio em uma )ari)el


tam:Pm P respons)el por cria%l.

9 9

Ms tipos das )ari)eis n;o precisam ser inGormadosJ Python desco:re o tipo da )ari)el por conta pr5pria!

Python Aula 03

18

... Ssando o Ihell

Python Aula 03

1>

... Ssando o Ihell

Python Aula 03

1?

... Ssando o Ihell

Python Aula 03

20

hitespace
9 Tmportante para identa;o e no)as linhas
9
Sse \ para Ruando Gor para uma pr50ima linha prematuramente.

9 /m Python

n;o h ' + !! Tsso P para deGini;o de dicionrios KdictL

9 Blocos de c5di6o deGinidos por identa;o!


/0emplo1

Python Aula 03

21

9 Comentrios comeam com U


9 9

Comentrios

Con)en;oB 4ocQ pode deGinir uma -documenta;o. em strin6 como primeira linha de RualRuer no)a Gun;o Rue )ocQ deGinir. Muito importante para o desen)ol)edor* crHtico para o usurio!

Python Aula 03

22

Conhecendo a lin6ua6em...

Python Aula 03

23

Conhecendo a lin6ua6em...

Python Aula 03

2,

2ipos Bsicos Tnteiros Kpadr;o para nAmerosL


9 9 9 9
Vi)is;o entre inteiros* resposta um inteiro! W ou l no Ginal. KCon)ertido automaticamente com precis;o de inteiros X 32 :itsL

9 Tnteiros Won6os
1.23* 3.,e%10

9 Yloats Kponto GlutuanteL 9 Comple0as


XX 2 C 3Z

9 Mpera3es )lidasB
a:s* etc.

C* D* XX * DD * po#* /0emplo1
Python Aula 03

21

2ipos Bsicos [epresenta;o numPrica


9 9 9 9
[epresenta;o de dH6itos comEsem Gormata;o de strin6 Sso dos operadores EE e E

9 Vi)is;o clssica E :ase 9 Mpera3es em nH)el de :it


1 \\ 2 * 1N 2 * 1O2

9 @ota3es he0adecimal E octal 9 Mpera3es )lidasB


a:s* round* etc.

2 * 0010 * 0100 * octK7,L* he0K211L * intK"200$L* intK"0100$*>L * intK"00,0$*17L

C* D* XX * DD * po#*
Python Aula 03

/0emplo1

27

2ipos Bsicos

/0emplo1.py
Python Aula 03

28

2ipos Bsicos
9Itrin6s
9
-a:c. ou "a:c$

9Mperadores de e0press;o de Python e sua


precedQncia

9httpBEEdocs.python.or6EreGerenceEe0pressions.htmlUsummary

/0emplo1.py
Python Aula 03

2>

Comandos :sicos
9 Al6uns comandos :sicos Rue podem aZudar
no Hnicio!

9 9 9

dirKelementL % todos os atri:utos e mPtodos Rue est;o associados a elemento. typeKelementL - Vesco:rir o tipo do o:Zeto! import % importe m5dulos para uso no seu c5di6o!

Python Aula 03

2?

/0ercHcio 01
9 Yaa um pro6rama Rue pea 2 nAmeros e um
real.

9 9 9

Calcule e mostreB M produto do do:ro do primeiro com a metade do se6undo A soma do triplo do primeiro com o terceiro M terceiro ele)ado ao cu:o

Python Aula 03

30

Atri:ui;o
... 4amos entender como Gunciona atri:ui;o!

Python Aula 03

31

Atri:ui;o
9 Atri:ui;o de uma )ari)el em Python si6niGica
9 9
Atri:ui;o cria reGerQncias e n;o c5pias! TnGerQncia do tipo da reGerQncia :aseado no tipo de dado atri:uHdo

criar um r5tulo para arma<enar uma reGerQncia para al6um o:Zeto.

9 A reGerQncia P deletada por meio de ]ar:a6e


Collection

^uando o o:Zeto dei0a de ser reGerenciado por nenhum outro r5tuloK)ari)elL.

Python Aula 03

32

Atri:ui;o
9 Wem:re%se Rue Python a tipa6em P din_mica!
9
Veclarar )ari)eis sem atri:uH%las ir le)antar um erro!

Python Aula 03

33

Atri:ui;o 4ocQ pode iniciali<ar )rias )ari)eis de uma s5


)e<!

0 = y = < = 2.0

9 [5tulos de )ari)eis s;o Case Iensiti)e e n;o


9
:o: :o:`2 `:o: `2`:o: :o:`2 BoB

podem iniciar com nAmero. @Ameros* letras e underscores s;o permitidos!

9 @;o esRuecer das pala)ras reser)adas!

Python Aula 03

3,

9 /ntendendo manipula;o de atri:ui;o de


reGerQncias

Atri:ui;o
9 9

0 = y n;o si6niGica Rue )ocQ Ge< uma c5pia de y! 0 = y o Rue realmente Ga< P 0 reGerencia ao o:Zeto Rue y reGerencia!

9 M Rue realmente acontece por trs dessa simples


atri:ui;oB

Python Aula 03

31

Atri:ui;o
9 Mas e se Gi<ermos isso ?! ^ual ser o )alor de 0 ?
XXX 0 = -casa. XXX y = 0 XXX 0 = -Ga<enda. XXX print 0

Python Aula 03

37

Atri:ui;o Mas e se Gi<ermos isso ?! ^ual ser o )alor de 0 ?

XXX 0 = -casa. XXX y = 0 XXX y = -Ga<enda. XXX print 0

Vo mesmo Zeito Rue n5s esper)amos! Vados 9 XXX 0 = -casa. Ucria 3* 0 reGerencia ao o:Zeto strin6 nati)os s;o imut)eis! KItrin6* Tnteiros* Gloat* -casa. comple0osL.
XXX y = 0 strin6 -casa. U Cria )aria)el y* reGerencia ao o:Zeto XXX y = -Ga<enda. UCria reGerencia ao o:Zeto strin6 -Ga<enda. XXX print 0 reGerencia -casa. XXX casa U @enhum eGeito em 0* ainda
Python Aula 03

38

Wistas* Itrin6s e 2uplas


... M poder de python a6ora!

Python Aula 03

3>

Wistas* Itrin6s e 2uplas


9 2odos os trQs s;o IeRuQncias!
9 9 9 9 9
Podem ser inde0ados por al6um )alor ordinal posicional 2odas as opera3es apresentadas aRui nesta se;o podem ser aplicadas em todos os tipos de seRuQncia

9 Wistas

li = a1*2*3* "a:c$b

9 2uplas

li = K23* "a:c$* ,.17* K2*3L* "deG$L

9 Itrin6s

st = -Hello

orld. st = "Hello
3?

orld$
Python Aula 03

/0emplos2

Wistas* Itrin6s e 2uplas


9 Manipulando seRuQncias!
9 9 9 9
Pelo Hndice a partir de 0 /0B ti a0b cndices podem ser positi)os ou ne6ati)os! /0B tia1b KesR.L tia%,b Kdir.L

9 Yracionamento 9 Mperador in
9
, in li

e matri<es!

lia1B3b Wa1Bb matri0 = aa1*3*,b * a3*1*7b * a8*>*?bb

retorna um :ooleano. Checa se um )alor est em uma seRuQncia! /0emplos2


Python Aula 03

,0

Wistas* Itrin6s e 2uplas

/0emplos2
Python Aula 03

,1

Mperac3es em Wistas
9 Mperador C *
9 9 9 9 9 9
D
orld. Kconcatena;oL a = -Hello. C [3] D , Krepeti;oL

9 Mperador lenKL e appendKL 9 Atri:ui;o

lenKL % retorna um inteiro com o tamanho da seRuQncia! popKL % retira o Altimo elemento da lista Kconceito de pilhas!L appendKL % adiciona um elemento ao Ginal da lista!

9 Ya<endo c5pias de seRuQncia * Cuidado!!!


Python Aula 03

list[ ] ! 3

/0emplos2

,2

Mperac3es em Wistas
9 ^ual ser o )alor de
XXX a = a1*2*3b XXX : = a XXX a.appendK,L XXX print :

:?

Python Aula 03

,3

9 ^ual ser o )alor de


XXX a = a1*2*3b XXX : = a XXX a.appendK,L XXX print :

Mperac3es em Wistas
:?

9 Iurpresa!
XXX : = a1*2*3*,b

9 Vados do tipo listas* dicionarios e prP%deGinidos


pelo usurio s;o mutveis!
Python Aula 03

,,

Mperac3es em Wistas

Python Aula 03

,1

Mperac3es em Wistas
9 Para Ga<er c5pias de listas
9 9 9 9 9 9
a = :aBb K2 c5pias independentesL a = : Kos 2 reGerenciam o mesmo o:ZetoL

9 ^ual a diGerena entre listas e tuplas ?


Wistas s;o mut)eis e 2uplas imut)eis! l = a1*"a:c$*,b t = K1*"a:c$*,*1L

9 Atri:ui;o em listas e tuplas


list[ ] ! 3 o"! t[ ] ! 3 #$%!!! (Deve-se criar uma nova tupla! - t ! (3& a'c&(&)) /0emplos2
Python Aula 03

,7

2uplas 0 Wistas
9 Wistas s;o mais lentas porPm mais poderosas Rue
tuplas

9 9 9 9

Wistas podem ser modiGicadas e tem di)ersos operadores Rue podem ser utili<ados 2uplas s;o imut)eis e tem menos Guncionalidades!

9 Para con)erter entre listas e tuplas ?


li = listKtL t = tupleKliL

/0emplos2
Python Aula 03

,8

MPtodos muito usados


9 appendKL* insertKL* e0tendKL* delKL 9 inde0KL* countKL* remo)eKL* popKL 9 re)erseKL * sortKL 9 etc.
/0emplos2
Python Aula 03

,>

/0ercHcio 02

Python Aula 03

,?

Itrin6s
9 Yormata;o e con)ers;o de Itrin6s 9 Ssam os mesmos operadores :sicos de lista 9 Multi%Itrin6s* Itrin6s com aspas simples e duplas 9 Caracteres Ipeciais e strKL e unicodeKL
/0emplos2
Python Aula 03

10

Itrin6s
9 2am:Pm uma seRuQncia e P Tmut)el!
9 9 9 9 9
-,2. C 1 Kerro!L Sse -,2. C strK1L GloatKL* intKL %X strin6 para numPro

9 Atri:ui;o

I = "spam$ Ia0b = "0$ /[[M!!! Itrin6s s;o imut)eis! Itrin6 %X Wista %X Itrin6 K.ZoinL

9 Yormata;o de strin6
/0emplos2
Python Aula 03

11

MPtodos mais usados


9 GindKL* replaceKL* ZoinKL* splitKL 9 isdi6itKL* islo#erKL* stripKL* 9 starts#ithKL* upperKL* lo#erKL 9 etc.
/0emplos2
Python Aula 03

12

9 Crie uma lista com o nome de 10 pessoas e


sorteie uma pessoa* depois em:aralhe no)amente e sorteie outra Ksem repeti;oL aleatoriedade.

/0ercHcio 03

9 Dica: help(random) - mdulo para 9 Yaa um pro6rama Rue permita ao usurio 9 Dica: Procure pela documentao do
help()
Python Aula 03

di6itar o nome e em se6uida mostrar ao usurio de trs pra Grente somente em letras maiAsculas.

13

Vicionrios
Sm -hash map. pythonico!

Python Aula 03

1,

Vicionrios
9 /strutura de dados em Gorma de cole3es onde os
9 9 9 9
Cha)es podem ser RuaisRuer o:Zetos do tipo imut)el 4alores podem ser de RualRuer tipo Sm dicionrio pode arma<enar diGerentes tipos de )alores e P mutvel!

items s;o arma<enados e :uscados pela c*ave em )e< do deslocamento posicional.

9 Criando e modiGicando dicionrios!

d = '-user. B -Marcel. * -pass#ord.B 23,2+

/0emplos3.py
Python Aula 03

11

Vicionrios
9 Vicionrios n;o s;o ordenados!
9 9 9 9
Yunciona como -hashin6. Sma no)a cha)e pode aparecer em RualRuerr lu6ar

9 Al6ums mPtodosB

has`deyK"e66s$L * clearKL * del da"dey$b * deysKL* )aluesKL* itemsKL* 6etKL * updateKL copyKL Ga<er c5pias de dicionrios ! KWem:re%se Rue dicionario P mut)el!L

/0emplos3.py
Python Aula 03

17

ArRui)os
Como P Gcil manipular um arRui)o!

Python Aula 03

18

ArRui)os
9 Apenas uma linha para a:rir um arRui)o!
9 9 9 9
Gile = openK-data.* "r$L tiposB r* a* #

9 Al6uns mPtodos para opera3es em arRui)osB


Gile.readKL* readlineKL* readlinesKL* Gile.#riteKL* #ritelinesKL* Gile.closeKL

/0emplos3.py
Python Aula 03

1>

Booleanos
/0press3es l56icas

Python Aula 03

1?

/0press3es l56icas
9 +rue e ,alse s;o constantes em Python
9 9 9 9 9
Yalse B 0* @one* ab * '+ * 0.0 2rueB 4alores @umPricos e0ceto 0* o:Zeto n;o )a<ios Sm dicionrio pode arma<enar diGerentes tipos de )alores e P mutvel!

9 Mperadores de compara;oB ==* != * \ * \=* etc.


& == e K eGetua teste de eRui)alQncia de )alorL & is e K2esta a identidade do o:ZetoL

/0emplos3.py
Python Aula 03

70

/0press3es l56icas
9 #one P similar ao @SWW em lin6ua6em C
9 9 9
W = a@oneb D 100 Kdeclara uma lista de 100 items @one L

9 Mpera3es com or e and


9
and e or KOO e TTL

not %X in)ers;o l56ica Ktrue %X Galse * Galse %X trueL DDCasos especiaisB /le retorna o )alor de uma das su:%e0press3es!

9 isinstanceKelement*typeL
9

4eriGica se um elemento P do tipo type

/0emplos3.py
Python Aula 03

71

/0ercHcios 0,

/0emplos3
Python Aula 03

72

/0ercHcios 01

/0emplos3
Python Aula 03

73

Tnstru3es compostas

TG python == -cool.B print -Mh yeah!.

Python Aula 03

7,

Ylu0o de Controle
9 4rias e0press3es Python para controlar o Glu0o do
pro6rama. 2odos eles Ga<em uso de testes condicionais :ooleanos.

9 9 9

iGs* else loops #hile* Gor assert

Python Aula 03

71

Tnstru3es iG
9 @;o esRueam da identa;o em :locos! 9 / do KBL ap5s a e0press;o :ooleana!

/0emplos,
Python Aula 03

77

Tnstru3es iG

/0emplos,.py
Python Aula 03

78

Tnstru;o assert
9 M uso de assert permite )eriGicar se al6o P
9
assertKnum:er`oG`players \ 1L

)erdadeiro durante a e0ecu;o do pro6rama.


Ie a condi;o Gor Galsa* o pro6rama P interrompido.

Python Aula 03

7>

9 4ocQ pode usar o comando :read para sair do loop


mais pr50imo Rue a en)ol)e.

Tnstru3es #hile

9 4ocQ pode usar o comando continue para pular

para o Hnicio do loop mais pr50imo Rue a en)ol)e e pular para a pr50ima itera;o. Ruer Rue se Gaa nada Kinstru;o )a<iaL

9 4ocQ pode usar o comando pass Ruando )ocQ n;o 9 4ocQ pode o o :loco else
do loop para Ruando se Ruer e0ecutar um c5di6o Ruando se sai normalmente do loop Ksem ser por comando :readL
/0emplos,
Python Aula 03

7?

Tnstru3es #hile

/0emplos,
Python Aula 03

80

Woops Gor iteram so:re Gor uma seRuQncia de items 9Tnstru3es

Klistas* tuplas* strin6 ou RuaisRuer outros o:Zetos cuZa a lin6ua6em considere como um -iterator.L items!

9 4rias maneiras de iterar so:re um conZunto de 9 2am:Pm possui o :loco else Ruando se sai
normalmente do loop Ksimilar ao #hileL

9 Yun;o muito usada nos loops GorB ran6eKL


9 9

ran6eKL % [etorna uma lista de nAmeros Rue )aria de 0 a ao nAmero passado como par_metro. 0ran6eKL % [etorna uma lista como ran6eKL s5 Rue li:era o item Ruando Gor reRuisitado! Mais eGiciente* porPm apenas com /0emplos, items do mesmo tipo e sem suporte f slicin6* repeti;o e concatena;o.
Python Aula 03

81

Tnstru3es Gor

/0emplos,.py
Python Aula 03

82

Tnstru;o <ip
9<ipKL P :astante poderoso* pode unir seRuQncias 9Permite tam:Pm Gacilitar a constru;o de
dHcionarios! onde retorna uma lista de tuplas Rue se distri:uem em pares os items paralelos e0traHdos dessas seRuQncias.

0 = dictK<ipKdes*)alsLL

/0emplos,.py
Python Aula 03

83

Compreens;o de listas

ai Gor i in -python P Gcil demais.b

Python Aula 03

8,

Compreens;o de listas
9 Yuncionalidade muito poderosa da lin6ua6em
Python

9 9

]era uma lista no)a aplicando uma Gun;o para cada elemento da lista ori6inal. Muito usado por pro6ramadores Python! K/conomia de c5di6o!L

9 A sinta0e da compreens;o de lista usa%se de


pala)ra%cha)esB

9 ae0pression Gor name in listb


Python Aula 03

81

Compreens;o de listas
9 Permite
tam:Pm o uso de Giltros Kdeteminam se uma determina e0press;o de)e ser e0ecutada so:re um mem:ro da listaL

9 ae0pression Gor name in list iG Gilter b

/0emplos,.py
Python Aula 03

87

Compreens;o de listas
9 4ocQ tam:Pm pode aninhar compreens;o de listas! 9 ae0pression Gor name in ae0pression Gor
name in listbb

/0emplos,.py
Python Aula 03

88

/0ercHcios 01
9 Crie
duas listas com nAmeros de 0 a ?* em:aralhe as listas e sorteie um nAmero de cada um para Gormar uma de<ena. [epita a opera;o 1 )e<es* assim como a Me6a Iena. Caso a de<ena caia como 00 Gaa o sorteio no)amente atP sair outra com:ina;o. Vepois e0i:a as de<enas sorteadas. os nAmeros Hmpares entre 1 e 10 Kusando compreens;o de listas!L
Python Aula 03

9 Yaa um pro6rama Rue imprima na tela apenas

8>

/0ercHcios 01

Python Aula 03

8?

/0ercHcios 01

Python Aula 03

>0

^uicdIort

! . /scolher um pi)g inicial 0J ". Colocar todos itens com cha)e menor Rue a de 0 f esRuerda de 0* Gormando uma seRhQncia I1J #. Colocar todos itens com cha)e maior Rue a de 0 f direita de 0* Gormando uma seRhQncia I2J $. Tsto Geito* o mesmo processo P aplicado fs seRhQncias I1 e I2* Rue por sua )e< produ<ir;o no)os se6mentosJ %. M processo de)e ser aplicado sucessi)amente fs seRhQncias enRuanto elas ti)erem tamanho i 1J

Python Aula 03

>1

^uicdIort
9 4ocQ pensaria assim...

def partition(list, l, e, g): if list == []: return (l, e, g) else: head = list[0] if head < e[0]: return partition(list[1:], l + [head], e, g) elif head > e[0]: return partition(list[1:], l, e, g + [head]) else: return partition(list[1:], l, e + [head], g)

Python Aula 03

>2

^uicdIort
9 A6ora Rue )ocQ sa:e compreens;o de listas*
pode Ga<er assim!
def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + qsort( [ ge for ge in L[1:] if ge >= L[0] ] ) [ L[0] ]

)ocQ

+ \

9/

n;o P Rue lem:ra a lin6ua6em Guncional &as'el ?!


# qsort [] = [] # qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_greq_x # where # elts_lt_x = [y | y <- xs, y < x] # elts_greq_x = [y | y <- xs, y >= x]

Python Aula 03

>3

Mrdena;o
9 Mas
um pro6ramador Pythonico* ainda Garia mais eGiciente!
list.sort()

9 Stili<a%se de uma implementa;o nati)a de Python

para ordena;o de seRuQncias! Mais eGiciente* hH:rido com comple0idade no pior caso de nlogn-

Python Aula 03

>,

9 @;o

Python P muito poderoso!


precisa rein)entar a roda! adaptar ao seu pro:lema! Molde%a para

9 A documenta;o de Python P :astante )asta e h


muitas Guncionalidades prontas!
>1
Python Aula 03

[eGerQncias

Python Aula 03

>7

Python Bsico
Marcel Pinheiro Caraciolo
Python Aula 03

>8