mini-curso de python dia 21/03 (segunda-feira) no ii workshop de sl do cin/ufpe
DESCRIPTION
Mini-Course introducing Python for beginners presented at II workshop of open source software at Centro de Informática/UFPE - 21/03/2011.TRANSCRIPT
![Page 1: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/1.jpg)
Hello, I am Python!Marcel Caraciolo
Mini-Curso De Introdução a Python
II Workshop de Software Livre - CIN/UFPE - Recife - PE
1
1
![Page 2: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/2.jpg)
Quem é o instrutor ?
2II Workshop de Software Livre - CIN/UFPE - Recife - PE
• Marcel Pinheiro Caraciolo - @marcelcaraciolo
• Sergipano, porém Recifense.
• Diretor de Pesquisa e Desenvolvimento da Orygens
• Mestrando em Ciência da Computação no CIN/UFPE na área de mineração de dados
• Membro e Moderador da Celúla de Usuários Python de Pernambuco (PUG-PE)
• Minhas áreas de interesse: Computação móvel e Computação inteligente
• Meus blogs: http://www.mobideia.com (sobre Mobilidade desde 2006)
http://aimotion.blogspot.com (sobre I.A. desde 2009)
Jovem Aprendiz ainda nas artes pythonicas.... (desde 2007)
2
![Page 3: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/3.jpg)
O que é Python ?
Por que Python?
3
!"#$
II Workshop de Software Livre - CIN/UFPE - Recife - PE
3
![Page 4: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/4.jpg)
Por que Python
4
É fácil
!"#$
II Workshop de Software Livre - CIN/UFPE - Recife - PE
4
![Page 5: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/5.jpg)
Por que é fácil
5
• Semelhança com pseudo-código.
!"#$
II Workshop de Software Livre - CIN/UFPE - Recife - PE
5
![Page 6: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/6.jpg)
Hello World Classíco... ‘hello world’ - Python vs { Java, C, PHP e Pascal }
II Workshop de Software Livre - CIN/UFPE - Recife - PE
6
![Page 7: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/7.jpg)
Hello World Classíco.... Em Python ....
print “Hello World”
II Workshop de Software Livre - CIN/UFPE - Recife - PE
7
![Page 8: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/8.jpg)
Por que Python
8
É fácil
É poderoso
II Workshop de Software Livre - CIN/UFPE - Recife - PE
8
![Page 9: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/9.jpg)
Canivete suíçoTipagem dinâmica
Biblioteca padrão completa
Multi-paradigma
Multi-plataforma
Facilmente extensível
Free Software (GPL)
II Workshop de Software Livre - CIN/UFPE - Recife - PE
9
![Page 10: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/10.jpg)
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)
• Web2Py (http://www.web2py.com)
10
II Workshop de Software Livre - CIN/UFPE - Recife - PE
10
![Page 11: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/11.jpg)
Web
11
http://www.nationalgeographic.com/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
11
![Page 12: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/12.jpg)
Web
12
http://globo.com
II Workshop de Software Livre - CIN/UFPE - Recife - PE
12
![Page 13: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/13.jpg)
Por que é poderoso• Python para gestão empresarial
• PyGTK (http://www.pygtk.org)
• PyQT (http://qt.nokia.com)
• MySQL, PostgreSQL, Oracle, Sqlite
13
II Workshop de Software Livre - CIN/UFPE - Recife - PE
13
![Page 14: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/14.jpg)
Aplicativos Desktop
http://www.stoq.com.br/ http://taskcoach.org/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
14
![Page 15: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/15.jpg)
Aplicativos Desktop
Python + Qt + Qml
II Workshop de Software Livre - CIN/UFPE - Recife - PE
15
![Page 16: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/16.jpg)
Python é multi-plataforma• Python em dispositivos móveis
• Python for Symbian (PyS60), PySide (Maemo), ASE (Android)
II Workshop de Software Livre - CIN/UFPE - Recife - PE
16
![Page 17: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/17.jpg)
Android (ASE)
17
http://code.google.com/p/android-scripting/II Workshop de Software Livre - CIN/UFPE - Recife - PE
17
![Page 18: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/18.jpg)
Por que é poderoso
NetworkXhttp://pypi.python.org/pypi
II Workshop de Software Livre - CIN/UFPE - Recife - PE
18
![Page 19: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/19.jpg)
Python é multi-plataforma
• PyMT
• Python Multi Touch
• Especialmente criado para ambientes multi-touch
http://pymt.eu/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
19
![Page 20: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/20.jpg)
PyGame e Jogos
http://www.pygame.org/news.htmlII Workshop de Software Livre - CIN/UFPE - Recife - PE
20
![Page 21: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/21.jpg)
Aplicativos Desktop
http://www.blender.org/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
21
![Page 22: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/22.jpg)
Quem usa Python?
22
II Workshop de Software Livre - CIN/UFPE - Recife - PE
22
![Page 23: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/23.jpg)
... e aqui no Brasil também!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
23
![Page 24: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/24.jpg)
Python entre as 10 + !
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
II Workshop de Software Livre - CIN/UFPE - Recife - PE
24
![Page 25: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/25.jpg)
O que é python ?
É fácil
É poderosoÉ poderoso
II Workshop de Software Livre - CIN/UFPE - Recife - PE
25
![Page 26: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/26.jpg)
O que é python ?
É fácil
É poderosoÉ poderoso
É divertido
II Workshop de Software Livre - CIN/UFPE - Recife - PE
25
![Page 27: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/27.jpg)
Fácil e poderoso!
lista = ['laranja', 'banana', 'uva']
lista.sort()
for item in lista:
print item.capitalize()
II Workshop de Software Livre - CIN/UFPE - Recife - PE
26
![Page 28: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/28.jpg)
Hun, sei o que é Python!
...E agora como eu começo ?
II Workshop de Software Livre - CIN/UFPE - Recife - PE
27
![Page 29: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/29.jpg)
Instaladores• Interpretador Python disponível para diversas
plataformas.
• Windows, Unix, Linux, etc.
• Para usuários Windows, é necessário o download do SDK!
• http://www.python.org/download/
28II Workshop de Software Livre - CIN/UFPE - Recife - PE
28
![Page 30: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/30.jpg)
Instaladores
• Atualmente Python está na versão 2.7.1 / 3.2
• No Python 3.0 houve mudanças críticas! 2.7.x suaviliza a transição para os desenvolvedores (Muitos frameworks ainda escritos para Python 2.x)
29II Workshop de Software Livre - CIN/UFPE - Recife - PE
29
![Page 31: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/31.jpg)
Instaladores (Windows)
30II Workshop de Software Livre - CIN/UFPE - Recife - PE
30
![Page 32: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/32.jpg)
Instaladores (Windows)• Não esqueça de adicionar o caminho da instalação
no PATH do sistema!
• ;C:\Python2x
• >>> 2 + 3
• >>> 5
31
Windows 7Approved!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
31
![Page 33: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/33.jpg)
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
• No Windows, digite CONTROL-Z + ENTER
32II Workshop de Software Livre - CIN/UFPE - Recife - PE
32
![Page 34: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/34.jpg)
Vamos executar!...E agora como eu crio meu
programa em python ?
33II Workshop de Software Livre - CIN/UFPE - Recife - PE
33
![Page 35: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/35.jpg)
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 ...
34
%python filename.py
Para tornar o arquivo *.py executável: #!/usr/bin/python
Para aceitar textos com acentos e caracteres especiais:
# -*- coding: utf-8 -*-
II Workshop de Software Livre - CIN/UFPE - Recife - PE
34
![Page 36: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/36.jpg)
Ambiente IDLE
35
• 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
II Workshop de Software Livre - CIN/UFPE - Recife - PE
35
![Page 37: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/37.jpg)
Desenvolvimento... E ambientes de
desenvolvimento para Python ?
36II Workshop de Software Livre - CIN/UFPE - Recife - PE
36
![Page 38: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/38.jpg)
Eclipse
37
• Aptana PyDev
• Plugin para desenvolvimento de aplicações Python para o Eclipse
• Suporte para Debug, UnitTests.
• http://pydev.org/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
37
![Page 39: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/39.jpg)
Netbeans
38
• Netbeans >= 6.5
• Plugin para desenvolvimento de aplicações Python para o Netbeans
• Suporte para Debug, UnitTests, etc.
• http://wiki.netbeans.org/PythonInstall
II Workshop de Software Livre - CIN/UFPE - Recife - PE
38
![Page 40: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/40.jpg)
ActivePython
39
• ActiveState Python
• Distribuição Python completa, instale e execute!
• Diversos plug-ins e suporte já ao Python 3.0
• http://www.activestate.com/activepython/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
39
![Page 41: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/41.jpg)
EasyClipse
40
• Distribuição customizada do Eclipse!
• Distribuição pronta para uso, inclusive com o ambiente para Python!
• Pydev já vem instalado !
• http://www.easyeclipse.org/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
40
![Page 42: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/42.jpg)
PyCharm
41
• IDE em Python customizada com suporte incluso ao Django
• Excelente IDE para desenvolvimento WEB
• 30 dias gratuito
• http://www.jetbrains.com/pycharm/
II Workshop de Software Livre - CIN/UFPE - Recife - PE
41
![Page 43: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/43.jpg)
Outros Editores
42
Notepad++, GEdit, VIM, Emacs, IDLE, Eric IDE, TextMate, etc.
Vários editores ao seu dispor compatíveis com Python!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
42
![Page 44: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/44.jpg)
Seu shell incrementado...
43
• IPython (Disponível para Linux, Mac, Windows)
• http://ipython.scipy.org/
• BPython (Disponível para Linux e Mac OS)
• http://bpython-interpreter.org/
• Incrementam o shell do seu interpretador Python com auto-complete, highlighting, etc.
II Workshop de Software Livre - CIN/UFPE - Recife - PE
43
![Page 45: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/45.jpg)
Chega de conversa...
44
• É hora de por a mão na massa!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
44
![Page 46: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/46.jpg)
Por onde começo ?
... Criando nosso primeiro Hello World !
45II Workshop de Software Livre - CIN/UFPE - Recife - PE
45
![Page 47: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/47.jpg)
... em Python ...
46
print “Hello World”
Exemplos1.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
46
![Page 48: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/48.jpg)
Tipos e operaçõesVamos ver um trecho de código em
Python!
47II Workshop de Software Livre - CIN/UFPE - Recife - PE
47
![Page 49: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/49.jpg)
Código Base
48II Workshop de Software Livre - CIN/UFPE - Recife - PE
48
![Page 50: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/50.jpg)
... entendendo o código...
49
• Atribuição utiliza = e comparação utiliza ==
II Workshop de Software Livre - CIN/UFPE - Recife - PE
49
![Page 51: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/51.jpg)
... entendendo o código...
50
• Atribuição utiliza = e comparação utiliza ==
II Workshop de Software Livre - CIN/UFPE - Recife - PE
50
![Page 52: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/52.jpg)
... entendendo o código...
51
• Números: + - * / % tem suas funções características
• + pode ser usado como concatenação de Strings;
• % pode ser usado para formatar Strings (assim como em C).
II Workshop de Software Livre - CIN/UFPE - Recife - PE
51
![Page 53: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/53.jpg)
... entendendo o código...
52
• Números: + - * / % tem suas funções características
• + pode ser usado como concatenação de Strings;
• % pode ser usado para formatar Strings (assim como em C).
II Workshop de Software Livre - CIN/UFPE - Recife - PE
52
![Page 54: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/54.jpg)
... entendendo o código...
53
• Operadores lógicos são palavras e não símbolos (||, &&)
• and, or, not
II Workshop de Software Livre - CIN/UFPE - Recife - PE
53
![Page 55: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/55.jpg)
... entendendo o código...
54
• Operadores lógicos são palavras e não símbolos (||, &&)
• and, or, not
II Workshop de Software Livre - CIN/UFPE - Recife - PE
54
![Page 56: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/56.jpg)
... entendendo o código...
55
• print é o comando básico para “impressão” na tela
II Workshop de Software Livre - CIN/UFPE - Recife - PE
55
![Page 57: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/57.jpg)
... entendendo o código...
56
• print é o comando básico para “impressão” na tela
II Workshop de Software Livre - CIN/UFPE - Recife - PE
56
![Page 58: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/58.jpg)
... entendendo o código...
57
• E se você quiser receber uma entrada diretamente do usuário ?
• raw_input() - retorna uma string !
Exemplos1.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
57
![Page 59: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/59.jpg)
... entendendo o código...
58
• 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;
• Python descobre o tipo da variável por conta própria!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
58
![Page 60: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/60.jpg)
... entendendo o código...
59
• 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;
• Python descobre o tipo da variável por conta própria!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
59
![Page 61: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/61.jpg)
... Usando o Shell
60
!!"#$%&'&'"()**+,-
! .#/#'&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
! .#/#'G2"9#*2H#/'#'%&794)$1#5I&'%)'94'?0:)1&'0#"1#');)791#/'&'7&4#$%&'<()*J=
!DDD()*J+KLLL-
!FM&794)$1#5I&'%&'&0:)1&'N$1)2/&D
!DDD
II Workshop de Software Livre - CIN/UFPE - Recife - PE
60
![Page 62: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/62.jpg)
... Usando o Shell
61
!!"#$%&'&'"()**+,-
! .#/#'/)0)12/'&'3&4#$%&'#$1)/2&/'0&%)5")
!!"#/'#'")1#'0#/#'324#!62721#/'89:
! .#/#'$#;)7#/')$1/)'&"'3&4#$%&'<=')>)3?1#%&"'@#"1#'?"#/'#"'")1#"'0#/#'324#')'0#/#'@#2>&
! .#/#'&@1)/'#<?%#'7)/#*')>)3?1#5")'&'3&4#$%&'A()*0+-B
!.#/#'"#2/'%&'()*0'AC?21B!.#/#'&@1)/'#'*2"1#'%&"'4D%?*&"'A4&%?*)"B
! .#/#'2$1)//&40)/'#*7?4'3&4#$%&'A31/*'E'FB
II Workshop de Software Livre - CIN/UFPE - Recife - PE
61
![Page 63: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/63.jpg)
Whitespace
62
• Importante para identação e novas linhas• Use \ para quando for para uma próxima linha prematuramente.
• Em Python não há { } !! Isso é para definição de dicionários (dict)
• Blocos de código definidos por identação!
Exemplos1.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
62
![Page 64: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/64.jpg)
Comentários
63
• 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.
• Muito importante para o desenvolvedor, crítico para o usuário!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
63
![Page 65: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/65.jpg)
Conhecendo a linguagem...
64
!!"#"$%&#'(%)$"*+&*%),-
! .)/"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
II Workshop de Software Livre - CIN/UFPE - Recife - PE
64
![Page 66: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/66.jpg)
Conhecendo a linguagem...
65
!!"#$%&%'(")
! *+,-.,))/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
II Workshop de Software Livre - CIN/UFPE - Recife - PE
65
![Page 67: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/67.jpg)
Tipos Básicos
66
• 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 • >> 2 + 3j
Exemplos1.pyII Workshop de Software Livre - CIN/UFPE - Recife - PE
66
![Page 68: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/68.jpg)
Tipos Básicos
67
• 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)
• Operações válidas: +, *, >> , ** , pow, abs, round, etc.Exemplos1.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
67
![Page 69: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/69.jpg)
Tipos Básicos
68
• Strings• “abc” ou ‘abc’
Exemplo1.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
!!"#$%&'&($)*"+",-.%
"#$%&'& ()*&+,&$-(.(/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/
'()*%
68
![Page 70: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/70.jpg)
Comandos básicos
69
• 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!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
!
!"#$%&'()$*"+),-$.*/0&/%($.
! 1$"'()$*"#$%&'
!20/3,&'*&,)$*4,/*/.&56/%*/"*#%5"/5%$*7-$3$*($*"+),-$
!8$%('*65.96/-*$7:/&$.*/*./,.*%/.#/3&56$.*";&$)$.
!"#$%& !"#$%&#
!"#$%& !"#$%&#'(&)#
!"#$%& !"#$%&#'(&)#!'(!"(&)
) %$"!"#$%&#!!"#$%& !*
) %$"!"#$%&#!!"#$%& !(&)#
) %$"!"#$%&#!!"#$%& !(&)#'+,-"!'(!(+,
69
![Page 71: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/71.jpg)
Exercício 01
70
• 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
• O terceiro elevado ao cubo
II Workshop de Software Livre - CIN/UFPE - Recife - PE
70
![Page 72: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/72.jpg)
Atribuição... Vamos entender como funciona
atribuição!
71II Workshop de Software Livre - CIN/UFPE - Recife - PE
71
![Page 73: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/73.jpg)
Atribuição
72
• 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).
II Workshop de Software Livre - CIN/UFPE - Recife - PE
72
![Page 74: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/74.jpg)
Atribuição
73
• Lembre-se que Python a tipagem é dinâmica!• Declarar variáveis sem atribuí-las irá levantar um erro!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
73
![Page 75: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/75.jpg)
Atribuição
74
• 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
• Não esquecer das palavras reservadas!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
74
![Page 76: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/76.jpg)
Atribuição
75
• Entendendo manipulação de atribuição de referências• x = y não significa que você fez uma cópia de y!
• x = y o que realmente faz é x referencia ao objeto que y referencia!
• O que realmente acontece por trás dessa simples atribuição:
II Workshop de Software Livre - CIN/UFPE - Recife - PE
75
![Page 77: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/77.jpg)
Atribuição
76
• Mas e se fizermos isso ?! Qual será o valor de x ?
>>> x = “casa”
>>> y = x
>>> x = “fazenda”
>>> print x
II Workshop de Software Livre - CIN/UFPE - Recife - PE
76
![Page 78: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/78.jpg)
Atribuição
77
• Mas e se fizermos isso ?! Qual será o valor de x ?
• Do mesmo jeito que nós esperávamos! Dados nativos são imutáveis! (String, Inteiros, float, complexos).
>>> x = “casa”
>>> y = x
>>> y = “fazenda”
>>> print x
>>> x = “casa” #cria 3, x referencia ao objeto string “casa”
>>> y = x # Cria variavel y, referencia ao objeto string “casa”
>>> y = “fazenda” #Cria referencia ao objeto string “fazenda”
>>> print x # Nenhum efeito em x, ainda referencia “casa”
>>> casa
II Workshop de Software Livre - CIN/UFPE - Recife - PE
77
![Page 79: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/79.jpg)
Listas, Strings e Tuplas
... O poder de python agora!
78II Workshop de Software Livre - CIN/UFPE - Recife - PE
78
![Page 80: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/80.jpg)
Listas, Strings e Tuplas
79
• 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• st = “Hello World” st = ‘Hello World’
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
79
![Page 81: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/81.jpg)
Listas, Strings e Tuplas
80
• 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!
• 4 in li
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
80
![Page 82: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/82.jpg)
Listas, Strings e Tuplas
81
Exemplos2
!
!"#$%#&'&%()##%*+,&"$)*#
! -*+"()&.,#"$"/,#&)&*)0%$"/,#
!!!"#$#%&'(')'*'+,#!"#$%&'()*%)+$,-%
!!!"%-,
&
!!!"%(,
)
!!!"%.&,
+
!!!"%.),
)
!!!"%&/,
%(')'*'+,
!!!"%/),
%&'('),
!!!"%&/*/(,#!%"#.,"$*()()/%,,(0)"(+.-%1,.)/2+%3*()*.)4).5)4
%('*,
!!!"%//.&,
%+'*')'('&,#!/%,,()3.6%-$7()$37.#-.)%),.8293"$%
II Workshop de Software Livre - CIN/UFPE - Recife - PE
81
![Page 83: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/83.jpg)
Operacões em Listas
82
• 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’
• Fazendo cópias de sequência , Cuidado!!!Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
82
![Page 84: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/84.jpg)
Operacões em Listas
83
• Qual será o valor de b ?
>>> a = [1,2,3]
>>> b = a
>>> a.append(4)
>>> print b
II Workshop de Software Livre - CIN/UFPE - Recife - PE
83
![Page 85: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/85.jpg)
Operacões em Listas
84
• 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]
II Workshop de Software Livre - CIN/UFPE - Recife - PE
84
![Page 86: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/86.jpg)
Operacões em Listas
85II Workshop de Software Livre - CIN/UFPE - Recife - PE
85
![Page 87: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/87.jpg)
Operacões em Listas
86
• 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!
• t[0] = 3 NOK!!! (Deve-se criar uma nova tupla! - t = (3, ‘abc’,4,5)
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
86
![Page 88: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/88.jpg)
Tuplas x Listas
87
• Listas são mais lentas porém mais poderosas que tuplas• Listas podem ser modificadas e tem diversos operadores que podem ser
utilizados
• Tuplas são imutáveis e tem menos funcionalidades!
• Para converter entre listas e tuplas ?
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
!
!"#$%&
! '(%)*+%,-.)-/*0"%*&/%/$*&)%&1/+2,/",%/3*4-(-.5%/&")*$1/&62/*,")78-*&
! /9&%:&-/%/4".562/)"#$-;</#%(%/)(%.&42(,%(/2")(2&/)*#2&/-,/)"#$%&
!!!"#$#%&'(')'*'+,
!!!-./012"3
2&'(')'*'+3
!!!045-2-./012"33
%&'(')'*'+,
!!!610/2-./013#!"#$%&%'#"())
87
![Page 89: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/89.jpg)
Exercício 02
88
!
!"#$%&%'()*+*
! ,(-.$#/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
II Workshop de Software Livre - CIN/UFPE - Recife - PE
88
![Page 90: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/90.jpg)
Métodos muito usados
89
• append(), insert(), extend(), del()
• min(), max()
• index(), count(), remove(), pop()
• reverse() , sort()
• etc.
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
89
![Page 91: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/91.jpg)
Strings
90
• Formatação e conversão de Strings
• Usam os mesmos operadores básicos de lista
• Multi-Strings, Strings com aspas simples e duplas
• Caracteres Speciais e str() e unicode()
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
90
![Page 92: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/92.jpg)
Strings
91
• 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!
• String -> Lista -> String (.join)
• Formatação de string
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
91
![Page 93: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/93.jpg)
Métodos mais usados
92
• find(), replace(), join(), split()
• isdigit(), islower(), strip(),
• startswith(), upper(), lower()
• etc.
Exemplos2.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
92
![Page 94: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/94.jpg)
Exercício 03
93
• 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 help(“”) !
II Workshop de Software Livre - CIN/UFPE - Recife - PE
93
![Page 95: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/95.jpg)
Dicionários
Um “hash map” pythonico!
94II Workshop de Software Livre - CIN/UFPE - Recife - PE
94
![Page 96: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/96.jpg)
Dicionários
95
• 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!• d = {“user” : “Marcel” , “password”: 2342}
Exemplos3.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
95
![Page 97: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/97.jpg)
Dicionários
96
• Dicionários não são ordenados!• Uma nova chave pode aparecer em qualquerr lugar
• Funciona como “hashing”
• Algums métodos:• has_key(‘eggs’) , clear() , del d[‘key’] , keys(), values(), items(), get() , update()
• copy() fazer cópias de dicionários ! (Lembre-se que dicionario é mutável!)
Exemplos3.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
96
![Page 98: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/98.jpg)
Arquivos
Como é fácil manipular um arquivo!
97II Workshop de Software Livre - CIN/UFPE - Recife - PE
97
![Page 99: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/99.jpg)
Arquivos
98
• 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(),
• file.close()
Exemplos3.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
98
![Page 100: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/100.jpg)
Booleanos
Expressões lógicas
99II Workshop de Software Livre - CIN/UFPE - Recife - PE
99
![Page 101: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/101.jpg)
Expressões lógicas
100
• True e False são constantes em Python• False : 0, None, [] , {} , 0.0
• True: Valores Numéricos exceto 0, objeto não vazios
• Um dicionário pode armazenar diferentes tipos de valores e é mutável!
• Operadores de comparação: ==, != , < , <=, etc.• X == Y ( efetua teste de equivalência de valor)
• X is Y (Testa a identidade do objeto)
Exemplos3.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
100
![Page 102: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/102.jpg)
Expressões lógicas
101
• 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)• Verifica se um elemento é do tipo type
Exemplos3
II Workshop de Software Livre - CIN/UFPE - Recife - PE
101
![Page 103: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/103.jpg)
Exercício 03
102II Workshop de Software Livre - CIN/UFPE - Recife - PE
102
![Page 104: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/104.jpg)
Exercício 04
103II Workshop de Software Livre - CIN/UFPE - Recife - PE
103
![Page 105: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/105.jpg)
Instruções compostasIf python == “cool”:
print “Oh yeah!”
104II Workshop de Software Livre - CIN/UFPE - Recife - PE
104
![Page 106: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/106.jpg)
Fluxo de Controle
105
• Várias expressões Python para controlar o fluxo do programa. Todos eles fazem uso de testes condicionais booleanos.• ifs, else
• loops while, for
II Workshop de Software Livre - CIN/UFPE - Recife - PE
105
![Page 107: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/107.jpg)
Instruções if
106
Exemplos4
II Workshop de Software Livre - CIN/UFPE - Recife - PE
106
![Page 108: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/108.jpg)
Instruções while
107
Exemplos4
II Workshop de Software Livre - CIN/UFPE - Recife - PE
107
![Page 109: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/109.jpg)
Instruções while
108
• 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)
• Você pode o o bloco else do loop para quando se quer executar um código quando se sai normalmente do loop (sem ser por comando break)
Exemplos4.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
108
![Page 110: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/110.jpg)
Instruções for
109
• 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.Exemplos4.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
109
![Page 111: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/111.jpg)
Instruções for
110II Workshop de Software Livre - CIN/UFPE - Recife - PE
110
![Page 112: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/112.jpg)
Instrução zip
111
• A função range() percorre sequências de maneira exaustiva. A função interna zip permite usar loops for para visitar várias sequências em paralelo.
• zip() é bastante poderoso, pode unir sequências onde retorna uma lista de tuplas que se distribuem em pares os items paralelos extraídos dessas sequências.
• Permite também facilitar a construção de dícionarios!• x = dict(zip(kes,vals))
Exemplos4.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
!
� � � � � � � � � � � � � � � � � � � � � � � � �
! � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
! � � � � � � �! % % % � � � � & � � ! ' & " # ( ' �! & � � � " � � � � � # � � � ! � ( � '! % % % � � � � & � � ! ' & " # ( ' & ) * $ ' �! & � � � " � ) � � � � � # � * � � � ! � ( � $ � '! % % % � � � � & � � ! ' & " # ( ' & ) * ' �! & � � � " � ) � � � � � # � * � '
111
![Page 113: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/113.jpg)
Compreensão de listas
[i for i in “python é fácil demais”]
112II Workshop de Software Livre - CIN/UFPE - Recife - PE
112
![Page 114: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/114.jpg)
Compreensão de listas
113
• 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]
Exemplos4.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
!
!"#$%&&'()"*+&*,-(./(
! 01.2"'*(3$"%./*4"#$%&(()"*+&*,-(./(5*4%-/*,-(./(*+&*6"%#/*674-,*&*%7$-+/8*9*3("*+&*4"#$%&(()"*+&*,-(./(*:*;&#*4"#3#*&#*#/..-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
113
![Page 115: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/115.jpg)
Compreensão de listas
114
• 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 ]
Exemplos4.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
!
!"#$%&&'()"*+&*,-(./(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
114
![Page 116: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/116.jpg)
Exercício 05
115
• 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/215($;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
II Workshop de Software Livre - CIN/UFPE - Recife - PE
115
![Page 117: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/117.jpg)
Funções
...Seu programa tendo cara de programa!
116II Workshop de Software Livre - CIN/UFPE - Recife - PE
116
![Page 118: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/118.jpg)
Definindo Funções
117
Definição da função inicia com “def ”
II Workshop de Software Livre - CIN/UFPE - Recife - PE
117
![Page 119: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/119.jpg)
Definindo Funções
118
Definição da função inicia com “def ” Nome da função
II Workshop de Software Livre - CIN/UFPE - Recife - PE
118
![Page 120: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/120.jpg)
Definindo Funções
119
Definição da função inicia com “def ” Nome da função Argumentos
II Workshop de Software Livre - CIN/UFPE - Recife - PE
119
![Page 121: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/121.jpg)
Definindo Funções
120
Definição da função inicia com “def ” Nome da função Argumentos
Identação
II Workshop de Software Livre - CIN/UFPE - Recife - PE
120
![Page 122: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/122.jpg)
Definindo Funções
121
Definição da função inicia com “def ” Nome da função Argumentos
Identação
“return” indica o retorno da função
II Workshop de Software Livre - CIN/UFPE - Recife - PE
121
![Page 123: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/123.jpg)
Definindo Funções
122
Definição da função inicia com “def ” Nome da função Argumentos
Identação
“return” indica o retorno da função
Sem header fileSem declaração do tipo de retorno da função ou do tipo dos argumentos
II Workshop de Software Livre - CIN/UFPE - Recife - PE
122
![Page 124: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/124.jpg)
Chamando uma função
123
>>> def myfun(x, y): return x * y>>> myfun(3, 4)12
• Sintaxe básica para chamar uma função:
Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
123
![Page 125: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/125.jpg)
Passagem de parâmetros
124
• Várias métricas podem ser usadas na passagem dos parâmetros de uma função:
>>> def myfun(x, y): return x * y>>> myfun(3, 4)12>>> myfun(y=3, x=4)12>>> myfun(3, y=4)12
Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
124
![Page 126: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/126.jpg)
Parâmetros com valores padrões
125
• 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 return res
Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
125
![Page 127: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/127.jpg)
Parâmetros com valores padrões
126
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 é 1212>>> myfun(x=3, prompt = False)12>>> myfun(5, 2, False)10 Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
126
![Page 128: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/128.jpg)
Valor de retorno
127
• 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;
• É lógicamente equivalente à False;
• O interpretador não imprime None.
II Workshop de Software Livre - CIN/UFPE - Recife - PE
127
![Page 129: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/129.jpg)
Valor de retorno
128
• Uma função pode retornar mais de um valor
>>> def teste(): x = 1
y = 2z = 3
return x, y, z
>>> x, y, z = teste()>>> ret = teste()>>> ret(1, 2, 3)
Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
128
![Page 130: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/130.jpg)
Algumas funções especiais
129
... e Python também tem seu momento funcional!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
129
![Page 131: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/131.jpg)
Parâmetros args
130
Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
130
![Page 132: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/132.jpg)
Funções map, reduce e filter
131
• 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.
Exemplos5.py
II Workshop de Software Livre - CIN/UFPE - Recife - PE
131
![Page 133: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/133.jpg)
Módulos
132
... Módulos: o que é, como criar e como utilizar.
II Workshop de Software Livre - CIN/UFPE - Recife - PE
132
![Page 134: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/134.jpg)
Introdução 1/2
133
• Quando você encerra o interpretador, todas as definições de variáveis e funções são perdidas;
• Solução é gerar um script e roda-lo.
• Mas e se você desejar utilizar um determinada função do script em outro programa?
• Solução são os módulos!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
133
![Page 135: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/135.jpg)
Introdução 2/2
134
• Um módulo é um arquivo .py contendo definições e comandos Python:
• Funções
• Variáveis e constantes
• Classes
• ...
• Vantagem é a possibilidade de adicionar todas estas definições em outros arquivos ou módulos.
• Isto é feito utilizando a cláusula import
II Workshop de Software Livre - CIN/UFPE - Recife - PE
134
![Page 136: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/136.jpg)
Executando módulos como scripts
135
• Rodar um módulo Python é similar a importar as definições do módulo para o interpretador.
• Se você fizer python meuModulo.py irá carregar as definições e destruir logo em seguida!
• Para executar algum determinado código de maneira similar à um script você deve testar a cláusula __name__ :
Exemplos5.py
if __name__ == “__main__”: print “Execute algum código”
II Workshop de Software Livre - CIN/UFPE - Recife - PE
135
![Page 137: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/137.jpg)
Pacotes
136
• Pacotes são coleções de módulos Python.
• Qualquer diretório do sistema operacional que contém um arquivo __init__.py dentro é considerado um pacote.
• Pacotes organizam módulos e permitem que programadores importem módulos da seguinte maneira:
• import meuPacote.meuSubPacote.meuModulo
# meuPacote/# __init__.py -- vazio# meuSubPacote/# __init__.py -- vazio# meuModulo.py -- modulo importado
II Workshop de Software Livre - CIN/UFPE - Recife - PE
136
![Page 138: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/138.jpg)
Caminho de busca dos módulos
137
• Quando você executa import meuModulo o interpretador procura pelo arquivo meuModulo.py seguindo uma determinada regra.
• Primeiramente ele procura pelo arquivo no diretório corrente (onde o interpretador foi executado).
• Caso ele não encontre o arquivo no diretório corrente, a busca prossegue em uma lista de diretórios que é especificada na variável sys.path
• Você pode atribuir novos diretórios de busca na variável sys.path (ela é uma lista dentro do módulo sys da biblioteca padrão)
• Útil quando você quer instalar seu módulo na máquina de um usuário.
II Workshop de Software Livre - CIN/UFPE - Recife - PE
137
![Page 139: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/139.jpg)
Compilando um módulo Python
138
... Compilando??? Como assim??? Python não é interpretado???
II Workshop de Software Livre - CIN/UFPE - Recife - PE
138
![Page 140: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/140.jpg)
Compilando um módulo Python
139
• Sim, Python é e continua sendo interpretada!
• Python utiliza o conceito de byte-code (muito conhecido em Java).
• O que acontece quando você importa um módulo:
• 1) - Interpretador busca pelo arquivo .py correspondente;
• 2) - Arquivo .py é “compilado” para o byte-code reconhecido pelo interpretador;
• 3) - Byte-Code é incorporado a tabela de símbolos correntes do interpretador.
II Workshop de Software Livre - CIN/UFPE - Recife - PE
139
![Page 141: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/141.jpg)
Compilando um módulo Python
140
• Compilação para byte-code pode ser um gargalo de desempenho quando você carregar um programa!
• Especialmente se você utiliza muitos módulos em seu programa.
• Solução é pré-compilar os módulos antes de rodar seu programa!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
140
![Page 142: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/142.jpg)
Exercício 06
141
•
II Workshop de Software Livre - CIN/UFPE - Recife - PE
141
![Page 143: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/143.jpg)
QuickSort
142
• Algoritmo de ordenação bastante utilizado e muito eficiente
• Complexidade BigO(nlogn)
1 . Escolher um pivô inicial x;
2. Colocar todos itens com chave menor que a de x à esquerda de x, formando uma seqüência S1;
3. Colocar todos itens com chave maior que a de x à direita de x, formando uma seqüência S2;
4. Isto feito, o mesmo processo é aplicado às seqüências S1 e S2, que por sua vezproduzirão novos segmentos;
5. O processo deve ser aplicado sucessivamente às seqüências enquantoelas tiverem tamanho ≥ 1;
II Workshop de Software Livre - CIN/UFPE - Recife - PE
142
![Page 144: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/144.jpg)
QuickSort
143
• Você 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)
II Workshop de Software Livre - CIN/UFPE - Recife - PE
143
![Page 145: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/145.jpg)
QuickSort
144
• Agora que você sabe compreensão de listas, você pode fazer assim!
def qsort(L): if len(L) <= 1: return L return qsort( [ lt for lt in L[1:] if lt < L[0] ] ) + [ L[0] ] + \ qsort( [ ge for ge in L[1:] if ge >= L[0] ] )
• E não é que lembra a linguagem funcional Haskel ?!# 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]
II Workshop de Software Livre - CIN/UFPE - Recife - PE
144
![Page 146: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/146.jpg)
Ordenação
145
• Mas um programador Pythonico, ainda faria mais eficiente!
list.sort()
• Utiliza-se de uma implementação nativa de Python para ordenação de sequências! Mais eficiente, híbrido com complexidade no pior caso de nlogn.
II Workshop de Software Livre - CIN/UFPE - Recife - PE
145
![Page 147: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/147.jpg)
Python é muito poderoso!
146
• 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!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
146
![Page 148: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/148.jpg)
Chegamos ao fim! =D
147
Hora da random.choice([pergunta, dúvida, discussão]) !!
II Workshop de Software Livre - CIN/UFPE - Recife - PE
147
![Page 149: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/149.jpg)
Referências
148
• 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
II Workshop de Software Livre - CIN/UFPE - Recife - PE
148
![Page 150: Mini-Curso de Python dia 21/03 (Segunda-Feira) no II Workshop de SL do CIN/UFPE](https://reader034.vdocuments.com.br/reader034/viewer/2022051209/54965570ac7959042e8b5090/html5/thumbnails/150.jpg)
Hello, I am Python!Marcel Caraciolo
Mini-Curso De Introdução a Python
149II Workshop de Software Livre - CIN/UFPE - Recife - PE
149