Buscar

Aulas Python

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 204 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 204 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 204 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
Python 
Professor Marcio Antelio 
marcioantelio.cefet@gmail.com 
2 
Bibliografia 
 
n  Dawson M. Python Programming for the Absolute 
Beginner. 3º ed. Course Technology PTR, 2010. 
 
n  Barry P. Head First Python.1º ed. O'Relly, 2010. 
 
n  Lutz, Mark. Learning Python. 4º ed. O´Relly, 2011. 
 
 
3 
Python 
n  Por que este nome ? 
¡  Guido Van Rossum 
¡  Série de comédia da BBC “Monty Python’s Flying 
Circus” 
4 
Python 
n  Qualidade 
¡  Sintaxe simples 
¡  Segue um conjunto de conceitos principais 
¡  Fácil de aprender 
¡  Fácil de compreender 
¡  Fácil de lembrar 
 
 
5 
Python 
n  Produtividade de desenvolvimento 
¡  Menor esforço de programação 
¡  Maior velocidade de implementação 
6 
Python 
n  Linguagem de script ? 
¡  É uma linguagem de programação que é geralmente 
aplicado em regras de script 
¡  Ferramentas shell 
¡  Linguagem de controle de outros componentes 
¡  Linguagem simples usada para a codificação de tarefas 
rápidas 
 
7 
Python 
n  Desvantagem ? 
¡  Linguagem interpretada 
¡  Depende do programa 
¡  Maior performance do hardware 
8 
Python 
n  O que posso fazer ? 
¡  Programação de sistemas 
¡  Interfaces gráficas 
¡  Script de internet 
¡  Integração de componentes 
 
9 
Python 
n  O que posso fazer ? 
¡  Banco de Dados 
¡  Programação científica e numérica 
¡  Jogos 
¡  Imagens 
¡  Robots 
10 
Python 
n  Vantagens 
¡  OO 
¡  Open Source 
¡  Independente de plataforma 
¡  Fácil de usar 
¡  Fácil de aprender 
11 
Interpretador Python 
n  Execução do programa 
¡  Visão do Desenvolvedor 
¡  Visão do Processo 
 
n  Download 
¡  http://www.python.org 
¡  Versões 2.X e 3.X 
 
12 
Visão do desenvolvedor 
n  Um programa escrito em Python é apenas um 
arquivo texto contendo código fonte (script) 
n  Por convenção este arquivo possui a extensão 
“.py” 
13 
Visão do desenvolvedor 
n  O arquivo “exemplo.py” possui o seguinte script 
Python: 
¡  print (‘Hello World’) 
¡  print (2 ** 100) 
14 
Visão do desenvolvedor 
n  Saída do script 
¡  Hello World 
¡  1267650600228229401496703205376 
15 
Visão do Processo 
Source Code Byte Code Python Virtual 
Machine 
exemplo.py exemplo.pyc PVM 
16 
Ciclo de Desenvolvimento 
n  Não existe distinção entre o ambiente de 
desenvolvimento e execução. 
n  O compilador está presente em tempo de execução 
e é parte do sistema que roda o programa. 
n  Experiência de programação dinâmica 
17 
Implementações alternativas 
n  IronPython 
¡  Linguagem .NET 
n  CPython 
¡  Linguagem C 
n  Jython 
¡  Linguagem Java 
18 
Futuro 
n  Projeto Unladen Swallow 
¡  Mais rápido do que C em alguns contextos. 
n  Projeto PyPy 
¡  Implementação rápida e flexível de Python. 
n  Projeto Parrot 
¡  Máquina virtual comum. 
 
19 
Prompt Python 
20 
Prompt iterativo 
n  Começa com informações sobre Python. 
n  “>>>” O prompt está esperando que você digite 
 um comando ou expressão (Entrada). 
n  O resultado (Saída) é mostrado na linha seguinte. 
21 
Prompt Python 
22 
Prompt Python 
n  A sessão iterativa permite imprimir (Saída) o 
resultado de uma expressão que você digitou 
(Entrada). 
 
n  Estudar a linguagem. 
 
n  Testes. 
23 
Prompt Python 
24 
Rodando scripts 
n  Escrever o código fonte em arquivos. 
n  Estes arquivos são chamado módulos ou scripts. 
n  Extensão .py para os arquivos. 
 
25 
Rodando scripts 
26 
 Rodando scripts : Prompt 
Python 
27 
Rodando scripts : Prompt DOS 
28 
Rodando scripts : Prompt DOS 
n  Salvando a saída em um arquivo 
 
29 
Rodando scripts : Prompt 
Python 
30 
Rodando scripts 
 
31 
Interface IDLE 
32 
Interface IDLE 
33 
Objetos 
n  São estruturas de dados. 
n  Pode conter atributos (variáveis). 
n  Pode conter métodos (funções). 
34 
Objetos 
n  Tipos principais 
¡  Numbers 
¡  String 
¡  List 
¡  Dictionaries 
35 
Objetos 
n  Tipos principais 
¡  Tuples 
¡  Files 
¡  Sets 
¡  Boolean 
 
36 
Funções existentes 
n  Estrutura básica de uma função 
¡  retorno nomeDaFunção ( argumentos) 
n  Veremos futuramente como criar nossas própias 
funções. 
n  Veremos como importar módulos. 
 
37 
Tipo Numérico 
n  Números inteiros. 
n  Números reais. 
n  Números complexos. 
n  E outros. 
 
38 
Inteiros 
n  Tamanho ilimitado 
n  d = 1234 
n  d = 0 
n  d = - 10 
n  d = 1234659786597431235997412949 
39 
Inteiros 
n  Podem ser codificados: 
¡  Base 16 (hexadecimal) 
n  Começa com “0x” ou “0X” seguido por uma string de dígitos 
(0-9 e A-F) 
¡  Base 8 (octal) 
n  Começa com “0o” ou “0O” seguido pelos dígitos (0-7) 
¡  Base 2 (binário) 
n  Começa com “0b” ou “0B” seguido pelos dígitos (0-1) 
LETRA 
40 
Inteiros 
n  d = 0o177 
n  d = 0x9ff 
n  d = 0b101010 
41 
Números reais 
n  Conhecidos como ponto flutuante 
n  Possui o ponto decimal “.” 
n  Expoente é definido por “e” ou “E” seguido 
opcionalmente pelo sinal 
42 
Números reais 
n  d = 1.23 
n  d = 1. 
n  d = 1.0 
n  d = 3.14e-10 
n  d = 4E210 
n  d = 4.0e+210 
43 
Números complexos 
n  São compostos pela parte real + parte imaginária 
n  Parte imaginária é terminada com “j” ou “J” 
n  Podem ser construídos chamando a função 
complex (real, imag). 
44 
Números complexos 
n  d= 3+4j 
n  d= 3.0 + 4.0j 
n  d= 3J 
n  d = complex(1, -2) (1 - 2j) 
n  d = complex(1,) (1 + 0j) 
n  d = complex(1) (1 + 0j) 
45 
Operadores de expressões 
n  Expressões são combinações de números 
(ou outros objetos) e operadores que 
computam um valor quando executados 
pelo Python. 
n  Para realizar a expressão (x + y), Python 
aplica o operador “+” aos valores dos 
objetos x e y. O resultado é a soma de x e y, 
ou seja, outro objeto. 
46 
Precedência dos operadores 
n  Quando uma expressão envolve mais de um 
operador, Python agrupa suas partes de acordo 
com as regras de precedência. Estas regras 
determinam a ordem com que estas partes serão 
computadas. 
47 
48 
Precedência dos operadores 
n  X + Y * Z 
n  Primeiramente Python realiza a multiplicação de Y e 
Z, para depois somar com X. 
n  Isto porque “*” tem uma precedência maior do que 
“+”. 
49 
Parênteses 
n  (X + Y) *Z 
n  Python sempre avalia primeiro expressões em 
parênteses. 
n  Assim o operador + é aplicado aos objetos X e Y 
primeiro, o operador * é aplicado ao objeto Z e ao 
objeto resultante da soma. 
50 
Misturando tipos numéricos 
n  Expressões podem envolver operandos (objetos) de 
vários tipos. 
n  Python primeiramente converte operandos para o 
tipo mais complicado e então realiza o cálculo com 
todos os operandos no mesmo tipo. 
51 
Misturando tipos numéricos 
n  Ranking dos tipos numéricos em ordem crescente 
de complexidade 
¡  Inteiro 
¡  Real 
¡  Número Complexo 
52 
Misturando tipos numéricos 
n  soma = 4 + 3.14 
n  Primeiramente o valor inteiro (4) é convertido para 
ponto flutuante (4.0). Depois é realizado a soma de 
números reais. 
n  soma = 7.14 
53 
Conversões de tipos numéricos 
n  >>> int( 3.1415 ) 
 3 
 
n  >>> float( 3 ) 
 3.0 
 
54 
Váriaveis 
n  São criadas quando elas recebem um valor pela 
primeira vez 
n  São substituídas por seus valores quando usadas 
em expressõesn  Devem ser criadas antes de serem usadas em 
expressões 
n  Variáveis estão referenciando objetos. 
55 
Váriaveis e Expressões básicas 
56 
Comparações 
n  Resultam em valores booleanos 
¡  True 
¡  False 
57 
Comparações 
58 
Comparações 
59 
Divisões 
n  Verdadeira (X / Y) 
¡  Retorna um resultado real 
 
n  Floor (X // Y) 
¡  Retorna o valor mais próximo e abaixo do resultado 
truncado , retornando inteiro caso os operandos sejam 
inteiros ou real caso algum operando seja real. 
 
60 
Divisões 
>>> 10 / 4 
2.5 
>>> 10 // 4 
2 
>>> 10 / 4.0 
2.5 
>>> 10 // 4.0 
2.0 
61 
Números Complexos 
n  >>> 1j * 1J 
(-1 + 0j) 
 
n  >>> 2 + 1j * 3 
(2 + 3j) 
 
n  >>> (2+1j)*3 
(6 + 3j) 
62 
Bases numéricas 
n  0x01, 0x10, 0xff 
(1,16,255) 
n  >>> 0b1, 0b10000, 0b11111111 
(1, 16, 255) 
n  >>> 0o1, 0o20, 0o377 
(1, 16, 255) 
 
63 
Bases numéricas 
n  >>> oct(64), hex(64), bin(64) 
(‘0o100’,’0x40’,’0b1000000’) 
 
n  >>> int(‘64’), int(‘100’,8), int(‘40’,16), int(‘1000000’,
2) 
(64,64,64,64) 
64 
Ferramentas numéricas 
n  Outras funções pré-definidas 
¡  Funções que estão disponíveis quando executamos o 
interpretador 
n  Bibliotecas numéricas 
¡  Módulos criados para atender diferentes áreas 
65 
Bibioteca math 
66 
Bibioteca math 
Floor x Truncamento 
>>> import math 
>>> math.floor(2.5) 
2 
>>> math.floor(-2.5) 
-3 
>>> math.trunc(2.5) 
2 
>>> math.trunc(-2.5) 
-2 
 
67 
Mais funções pré-definidas 
n  >>> pow(2,4), 2**4 
(16,16) 
 
n  abs(-42.0),sum( (1,2,3,4 )) 
(42.0,10) 
 
n  min(3,1,2,4), max(3,1,2,4) 
(1,4) 
68 
Mais funções pré-definidas 
69 
Tipo Booleano 
n  True ou False 
n  1 ou 0 
70 
Tipo Booleano 
71 
Álgebra Booleana 
n  Complementação (ou Negação, ou Inversão) 
¡  Operação cujo resultado é simplesmente o valor 
complementar ao que a variável apresenta. Como uma 
variável booleana pode assumir um entre dois valores, 
caso assuma o valor 1 (true), seu complemento é 0 
(false) e vice-versa. 
72 
Álgebra Booleana 
n  AND (Multiplicação Lógica) 
¡  Esta operação binária resulta em 0 (false) caso pelo 
menos uma entrada seja 0 (false) 
 
n  OR (Adição Lógica) 
¡  Esta operação binária resulta em 1(true) se pelo menos 
uma das variáveis de entrada for 1(true) 
73 
Álgebra Booleana 
n  XOR 
¡  Esta operação binária resulta em 1(true) caso as 
entradas possuam valores diferentes, caso contrário o 
resultado é 0(false) 
74 
Tabela Verdade 
75 
Exemplo de código 
76 
Tipo String 
n  Coleção ordenada de caracteres usados para 
armazenar e representar informação baseada em 
texto. 
n  Serve para codificar símbolos, palavras, urls, 
caminhos de arquivo … 
n  São objetos imutáveis. 
77 
Tipo String 
n  Strings com aspas simples ou duplas são as 
mesmas 
¡  >>> “aluno”, ‘aluno’ 
 ('aluno', 'aluno') 
 
¡  >>> “knight’s”, ‘knight”s’ 
 ("knight's", 'knight"s') 
78 
Tipo String 
n  Concatenação 
¡  Operador + (Explícita) 
n  >>> title = "Sentido" + ' Da ' + " Vida" 
n  >>> title 
n  'Sentido Da Vida' 
¡  Implícita 
n  >>> title = "Sentido" ' Da ' " Vida" 
n  >>> title 
n  'Sentido Da Vida' 
79 
Tipo String 
n  Repetição 
¡  Operador * 
n  >>> s * 2 
n  'spamspam' 
80 
Tipo String 
n  Sequências de Escape 
¡  Estas sequências nos permite colocar byte codes na 
string que são difíceis de representar no teclado 
¡  Começam com a barra invertida (\) 
81 
Sequencias de Escape 
n  >>> 'knight\'s', "knight\"s" 
n  ("knight's", 'knight"s') 
 
n  >>> s= 'a\nb\tc‘ 
n  >>> print(s) 
n  a 
n  b c 
82 
Tipo String 
n  Aspas triplas 
¡  Também chamado de “block string” 
¡  É uma conveniência sintática para codificar textos em 
várias linhas. 
83 
Tipo String 
n  Aspas triplas 
¡  >>> frase=""" Getúlio Vargas 
¡  foi presidente do 
¡  Brasil""" 
¡  >>> frase 
¡  ' Getúlio Vargas\nfoi presidente do\nBrasil' 
84 
Funções Específicas 
n  Comprimento da string 
¡  >>> s="abcdefghij" 
¡  >>> len(s) 
¡  10 
85 
Funções Específicas 
n  Remover espaços em branco 
¡  >>> s=" parado " 
¡  >>> s.strip() 
¡  'parado‘ 
 
86 
Funções Específicas 
n  Substituições na String 
¡  >>> s="bala“ 
¡  >>> s.replace('a','o') 
¡  'bolo' 
87 
Funções Específicas 
n  Começa com uma substring 
¡  >>> s="paralelepípedo“ 
¡  >>> s.startswith('pa') 
¡  True 
n  Termina com uma substring 
¡  >>> s="paralelepípedo“ 
¡  >>> s.endswith('do') 
¡  True 
 
 
 
88 
Funções Específicas 
n  Verificar se a String é um número inteiro 
¡  >>> s="8080" 
¡  >>> s.isdigit() 
¡  True 
¡  >>> s="98e" 
¡  >>> s.isdigit() 
¡  False 
89 
Funções Específicas 
n  Todas as letras maiúsculas ou minúsculas. 
¡  >>> nome="Getúlio Vargas" 
¡  >>> nome.upper() 
¡  'GETÚLIO VARGAS' 
¡  >>> nome.lower() 
¡  'getúlio vargas' 
90 
Funções Específicas 
n  String vazia 
¡  s=“” 
¡  Qual função usar ?? 
 
n  Primeira letra maiúscula 
¡  >>> s="bom aluno" 
¡  >>> s.capitalize() 
¡  'Bom aluno‘ 
 
91 
Tipo Conjunto 
n  Coleção não ordenada de objetos únicos e 
imutáveis que suportam operações 
correspondentes a Teoria dos Conjuntos 
n  Por definição, um item aparece apenas uma vez no 
conjunto, não importando quantas vezes ele foi 
adicionado no conjunto. 
92 
Tipo Conjunto 
n  >>> x=set('abcde') 
n  >>> y=set('bdxyz') 
n  >>> x 
n  {'a', 'c', 'b', 'e', 'd'} 
n  >>> y 
n  {'y', 'x', 'b', 'd', 'z'} 
n  >>> 'e' in x #pertence 
n  True 
93 
Tipo Conjunto 
n  >>> x - y #diferença 
n  {'a', 'c', 'e'} 
n  >>> x | y #união 
n  {'a', 'c', 'b', 'e', 'd', 'y', 'x', 'z'} 
n  >>> x & y #interseção 
n  {'b', 'd'} 
 
 
94 
Tipo Conjunto 
n  >>> x ^y #Diferença simétrica 
n  {'a', 'c', 'e', 'y', 'x', 'z'} 
n  >>> x > y, x < y #SuperConjunto, SubConjunto 
n  (False, False) 
95 
Métodos do tipo conjunto 
n  >>> s1 = {1,2,3,4} 
n  >>> s1.add(5) 
n  >>> s1 
n  {1, 2, 3, 4, 5} 
n  >>> s1.remove(1) 
n  >>> s1 
n  {2, 3, 4, 5} 
96 
Métodos do tipo conjunto 
n  >>> s1.union({6,7}) 
n  {2, 3, 4, 5, 6, 7} 
n  >>> s1.intersection({1,3,5}) 
n  {3, 5} 
n  >>> s1.issubset(range(-5,5)) 
n  False 
97 
Tipo Lista 
n  É um objeto que representa uma coleção de 
objetos. 
n  Nesta coleção a ordem dos objetos é importante. 
n  São objetos mutáveis. 
n  Objetos são indexados. 
98 
Tipo Lista 
n  Variação do tamanho da lista 
n  A lista pode conter objetos complexos como por 
exemplo outras listas. 
99 
Tipo Lista 
n  >>> l = [] # lista vazia 
n  >>> l = [1,2,3,4] # 4 itens, índice: 0...3 
n  >>> l 
n  [1, 2, 3, 4] 
n  >>> l=['89'] # 1 item, índice: 0 
n  >>> l 
n  ['89'] 
100 
Tipo Lista 
n  >>> l=['abc',['def','ghi']] # lista de listas 
n  >>> l 
n  ['abc', ['def', 'ghi']] 
n  >>> l = list('123456789') # itens iteráveis 
n  >>> l 
n  ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 
101 
Tipo Lista 
n  >>> l= list(range(-5,5)) # sucessivos inteiros 
n  >>> l 
n  [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] 
n  >>> l[0] # índice 0 da lista 
n  -5 
n  >>> l[9] # último índice da lista 
n  4 
n  >>> l[len(l)-1] # ??? 
n  4 
102 
Tipo Lista–Operações básicas 
n  Concatenação – Somente pode envolver o 
mesmo tipo de sequência. 
¡  >>> [1,2,3] + [4,5,6] 
¡  [1, 2, 3, 4, 5, 6] 
¡  >>> [1,2,3] +[4,5,6] 
¡  [1, 2, 3, 4, 5, 6] 
¡  >>> str([1,2]) + "3,4" 
¡  '[1, 2]3,4' 
¡  >>> [1,2] + list("34") 
¡  [1, 2, '3', '4'] 
 
103 
Tipo Lista–Operações básicas 
n  Repetição 
¡  >>> ['NI'] * 4 
¡  ['NI', 'NI', 'NI', 'NI'] 
¡  >>> ['NI',8,['A',3]] * 2 
¡  ['NI', 8, ['A', 3], 'NI', 8, ['A', 3]] 
104 
Tipo Lista–Operações básicas 
n  >>> 3 in [1,2,3] 
n  True 
105 
Tipo Lista – Indexação 
n  >>> l=['time','Time','TIME'] # a partir do zero 
n  >>> l[1] # acessando o item na posição 1 
n  'Time' 
n  >>> l[-1] # Contagem negativa (direita) 
n  'TIME' 
n  >>> l[-2] 
n  'Time' 
n  >>> l[-3] 
n  'time' 
106 
Tipo Lista – Fatias (Slice) 
n  A fatia resultante é uma nova lista contendo os 
elementos cujas posições vão do primeiro índice ao 
segundo, não incluindo o último elemento. Se 
omitirmos um dos índices na fatia, assume-se início 
ou fim da lista. 
107 
Tipo Lista – Fatias (Slice) 
n  >>> l=['time','Time','TIME'] 
n  >>> l[1:2] 
n  ['Time'] 
n  >>> l[1:] 
n  ['Time', 'TIME'] 
n  >>> l[:2] 
n  ['time', 'Time'] 
108 
Tipo Lista – Matrizes 
n  São listas de listas 
n  Arrays multidimensionais 
109 
Tipo Lista – Matrizes 
n  >>> matriz = [ [1,2,3],[4,5,6],[7,8,9] ] 
n  >>> matriz[1] # acessando a linha 1 
n  [4, 5, 6] 
n  >>> matriz[1][1] # elemento da linha1, 
coluna 1 
n  5 
n  >>> matriz[2][0] 
n  7 
110 
Tipo Lista 
n  Modificando uma lista 
¡  >>> L = ['spam','Spam','SPAM'] 
¡  >>> L[1]='eggs' 
¡  >>> L 
¡  ['spam', 'eggs', 'SPAM'] 
¡  >>> L[0:2]=['eat','more'] 
¡  >>> L 
¡  ['eat', 'more', 'SPAM'] 
111 
Tipo Lista - Métodos 
S < e 
112 
Tipo Lista - Métodos 
n  >>> L=[1,2] 
n  >>> L.extend([3,4,5]) 
n  >>> L 
n  [1, 2, 3, 4, 5] 
n  >>> L.pop() 
n  5 
n  >>> L 
n  [1, 2, 3, 4] 
113 
Tipo Lista - Métodos 
n  >>> L.reverse() 
n  >>> L 
n  [4, 3, 2, 1] 
n  >>> list(reversed(L)) 
n  [1, 2, 3, 4] 
n  >>> 
114 
Tipo Lista – Estrutura de pilha 
>>>lista=[ ] 
>>>lista.append(1) 
>>>lista.append(2) 
>>>lista 
[1,2] 
>>>lista.pop() 
2 
>>>lista.pop() 
1 
>>>lista 
[ ] 
115 
Tipo Lista - Métodos 
n  >>> L=['spam','eggs','ham'] 
n  >>> L.index('eggs') #Índice do objeto 
n  1 
n  >>> L.insert(1, 'toast')# Insere na posição 
n  >>> L 
n  ['spam','toast','eggs','ham'] 
116 
Tipo Lista - Métodos 
n  >>> L.remove('eggs') #Deleta pelo valor 
n  >>> L 
n  ['spam','eggs','ham'] 
n  >>> L.pop(1) #Deleta pela posição 
n  'toast' 
n  >>> L 
n  ['spam','ham'] 
117 
Tipo Lista - Métodos 
n  >>> L 
n  ['spam','eat','more','please'] 
n  >>> del L[0] # deleta um item 
n  >>> L 
n  ['eat','more','please'] 
n  >>> del L[1:] # deleta uma seção 
n  >>>L 
n  ['eat'] 
118 
Esvaziando uma lista 
n  >>> L=['Already','got','one'] 
n  >>>L[1:]=[ ] 
n  >>>L 
n  ['Already'] 
n  >>>L[0]=[ ] 
n  >>>L 
n  [ [ ] ] 
119 
Tipo Dicionário 
n  Itens são armazenados e resgatados através de 
chaves. 
n  São conhecidos como arrays associativos ou hash. 
n  Podem conter qualquer tipo de objeto. 
n  Mapeamento de chaves para valores. 
120 
Tipo Dicionário - Chaves 
n  Valor único. 
n  Acesso ao valor somente pela chave. 
n  Pode ser qualquer objeto imutável 
(String, números,tuplas …) 
121 
Dicionário – Operações básicas 
n  >>> D = {'spam':2,'ham':1,'eggs':3} 
#Construindo 
n  >>> D['spam'] #Acessando um valor pela chave 
n  2 
n  >>> D #A ordem não importa 
n  {'eggs': 3, 'ham': 1, 'spam': 2} 
122 
Dicionário – Operações básicas 
n  >>> len(D) # Tamanho do dicionário 
n  3 
 
n  >>> 'ham' in D #Verificando se existe chave 
n  True 
 
n  >>> list(D.keys()) # Criando uma lista 
n  ['eggs', 'ham', 'spam'] 
123 
Dicionário – Ações 
n  >>> D 
n  {'eggs': 3, 'ham': 1, 'spam': 2} 
n  >>> D['ham']=['grill','bake','fry'] #Entrada 
n  >>> D 
n  {'eggs': 3, 'ham': ['grill', 'bake', 'fry'], 'spam': 
2} 
124 
Dicionário – Ações e Métodos 
n  >>> del D['eggs'] #Deletando uma entrada 
n  >>> D 
n  {'ham': ['grill', 'bake', 'fry'], 'spam': 2} 
n  >>> D['brunch']='bacon‘ #Adicionando 
n  >>> D 
n  {'brunch': 'bacon', 'ham': ['grill', 'bake', 'fry'], 'spam': 2} 
 
125 
Dicionário – Métodos 
n >>> D = {'spam':2,'ham':1,'eggs':3} 
n >>> list(D.values()) # Listando os valores 
n [3, 1, 2] 
n >>> list(D.items()) #Listando as tuplas 
n [('eggs', 3), ('ham', 1), ('spam', 2)] 
126 
Dicionário – Métodos 
n >>> D.get('spam') #Recuperando o valor 
pela chave 
n 2 
n >>> print(D.get('toast')) #Chave não existe 
n None 
 
127 
Dicionário – Métodos 
n >>> D 
n {'eggs': 3, 'ham': 1, 'spam': 2} 
n >>> D2={'toast':4, 'muffin':5} 
n >>> D.update(D2) #Atualizando 
n >>> D 
n {'toast': 4, 'muffin': 5, 'eggs': 3, 'ham': 1, 
'spam': 2} 
128 
Dicionário – Métodos 
n >>> D3={'spam':0,'toast':6} 
n >>> D.update(D3) # Atualizando 
n >>> D 
n {'toast': 6, 'ham': 1, 'spam': 0, 'muffin': 5, 
'eggs': 3} 
 
129 
Dicionário – Métodos 
n >>> D.pop('muffin') #Retorna o valor e 
 deleta o item 
n 5 
n >>> D 
n {'toast': 6, 'ham': 1, 'spam': 0, 'eggs': 3} 
130 
Dicionário – Estrutura de Dados 
n  >>> matriz={} 
n  >>> matriz[(1,2,3)]=88 
n  >>> matriz[(4,5,6)]=99 
n  >>> x=1;y=2;z=3 # “;” separador de comandos 
n  >>> matriz[(x,y,z)] 
n  88 
n  >>> matriz 
n  {(4, 5, 6): 99, (1, 2, 3): 88} 
131 
Dicionário – Estrutura de Dados 
n >>> pessoa={ 
 'nome':'Fulano', 
 'idade':32, 
 'emprego': ['analista','advogado'], 
 'endereco':{'pais':'Brasil','estado':'RJ', 
 'cep':8053} 
 } 
132 
Dicionário – Estrutura de Dados 
n >>> pessoa['nome'] 
n 'Fulano' 
n >>> pessoa['emprego'][1] 
n 'advogado' 
n >>> pessoa['endereco']['estado'] 
n 'RJ' 
133 
COMANDOS 
 Comandos Condicionais 
 Comandos de Repetição 
Comandos de Desvio 
134 
Estrutura de um programa Python 
n  Programas são compostos por módulos. 
n  Módulos possuem comandos. 
n  Comandos possuem expressões. 
n  Expressões criam e processam objetos. 
135 
Sintaxe de um programa Python 
n  A sintaxe é composta por comandos e 
expressões. 
n  Expressões modificam objetos. 
n  Comandos codificam a lógica de operações 
realizadas no programa. 
136 
Comando Condicional - IF 
n  Este comando seleciona ações a serem 
realizadas a partir de uma determinada 
condição. 
n  Este comando pode conter outros 
comandos, inclusive outros if `s 
137 
IF – Regras de Sintaxe 
x=8; y=5 
 
 
If ( x > y ) : 
 print(“O valor de x =”, x, “ é maior !”) 
 y=0 
 
 
print(“Fim do programa.”) 
“;" separa instruções na mesma linha 
TESTE, o '()'é opcional 
“:” é obrigatório para 
delimitar o fim do teste 
As instruções indentadas formam um bloco !!! 
138 
Delimitadores de Bloco: Regras de 
indentação 
x=1 
If x : 
 y=2 
 If y: 
 print(“bloco 2”) 
 print(“bloco 1”) 
print(“bloco 0”) 
 
139 
Comando Condicional – IF/ELIF/ELSE 
If (teste 1) : 
 Bloco 1 
elif (teste 2): # Comando opcional 
 Bloco 2 
else : # Comando opcional 
 Bloco 3 
 
140 
Comando Condicional – IF/ELIF/ELSE 
If ( not 1) : 
 print('true') 
else : 
 print('false') 
 
141 
Comando Condicional – IF/ELIF/ELSE 
pedido='egg-x-salada' 
if(pedido=='x-salada'): 
 print('R$ 3,00') 
elif(pedido=='egg-x-salada'): 
 print('R$ 4,00') 
elif(pedido=='x-tudo'): 
 print('R$ 5,00') 
else: 
 print('No momento não temos ...')142 
Comando Ternário 
If x: 
 a = y 
else: 
 a = z 
a = y if x else z 
d=5;f=6 
x=d if (d>f) else f 
d=5;f=6 
if(d > f): 
 x=d 
else: 
 x=f 
143 
Comando de Repetição - WHILE 
l  Este comando irá executar repetidamente 
(loop) um bloco de instruções indentadas 
enquanto seu teste (condição) permanecer 
verdadeiro. 
l  O loop é executado até o teste ser falso. 
Neste caso o controle finaliza o comando 
while e passa para a próxima instrução. 
 
144 
Comando de Repetição - WHILE 
l  O loop pode ser infinito caso o teste nunca 
seja falso. 
 
l  O teste sempre é avaliado antes de um 
novo loop ser iniciado, portanto caso na 
primeira vez ele seja falso, o loop nunca 
será executado. 
145 
WHILE- Formato Geral 
while (teste) : # Teste de loop 
bloco 0 # Loop 
else: # Comando opcional 
bloco 1 
146 
WHILE- Formato Geral 
while (teste) : # Teste de loop 
bloco 0 # Loop 
 
147 
WHILE - Exemplos 
while True:	
 print('Adeus')	
	
	
	
while 1:	
 print('Adeus')	
148 
Exemplo – Fatiando uma String 
frase='Adeus!' 
while frase: 
 print(frase) 
 frase=frase[1:] 
Laço 6 
Laço 2 
Laço 1 Adeus! frase='deus!' 
deus! frase='eus!' 
! frase='' 
SAÍDA 
149 
Exemplo – Imprimindo os números de 
0 a 9 
n=0 ; max=10 
while (n < max) : 
 print(n, end=' ') # saída na mesma linha 
 n+=1 
n=0 0 n=1 Laço 1: 0 < 10 ? 
Laço 2: 1 < 10 ? n=1 0 1 n=2 
Laço 10: 9 < 10 ? n=10 0 1 … 10 
0 1 0 1 
n=11 
SAÍDA 
150 
Comandos de Desvio Break/Continue/
Pass 
l  Pass: comando vazio. 
 
l  Continue: pula novamente para o teste. 
 
l  Break: Encerra o loop. 
 
l  Loop else: é executado apenas se o loop é 
finalizado normalmente, ou seja, sem um 
break ser chamado. 
151 
While – Formato Geral 
while (teste 1) : 
 bloco 1 
 If (teste 2): break 
 If (teste 3): break 
else : 
 bloco 2 
152 
Pass 
l  É utilizado quando a sintaxe exige uma 
expressão ou comando mas por enquanto 
você não irá defini-la. 
 
while 1: 
pass #TODO: print('Adeus') 
153 
Continue 
l  Pulo imediato para o teste de um novo loop. 
l  Imprimindo os números divisíveis por 2 
x=11 
while x: 
 x=x-1 
 If( x%2 != 0): continue 
 print(x, end=' ') 
154 
Break 
l  Saída imediata do loop . 
l  Entre com um nome e idade de uma pessoa 
até o usuário digitar “stop" 
 
while True: 
 nome=input('Entre com um nome ?') 
 if(nome =='stop'): break 
 idade=input('Entre com uma idade') 
 print('Nome:', nome,'Idade: ', idade ) 
155 
Loop Else -Exemplo do programa para 
identificar se um número > 2 é primo 
l  Saída imediata do loop . 
numero = int(input("Entre com o possível numero primo maior 
que 2: ")) 
fator = numero // 2 
print(fator) 
while (fator > 1): 
 if(numero % fator == 0): 
 print(numero, 'e divisivel por ', fator) 
 break 
 fator -=1 
else: 
 print('Primo') 
156 
Comando For 
É um iterador de sequência genérica. 
 
A cada laço e passa por uma sequência 
ordenada do objeto. 
 
157 
Formato geral 
for variável in objeto : 
instruções 
else: 
instruções 
Relaciona itens de 
um objeto ao objetivo 
A cada laço 
 o objetivo é associado 
 a um item 
Caso um break 
 não seja executado 
158 
Formato completo 
for variável in objeto : 
instruções 
If (teste): break 
If (teste):continue 
else: 
instruções 
159 
Exemplos – Acessando os elementos 
for x in [“flamengo”,”vasco”,”fluminense”]: 
print (x, end=” ”) 
 
 
Laço 1 
Laço 2 
Laço 3 
x=lista[0] 
x=lista[1] 
x=lista[2] 
flamengo 
flamengo vasco 
flamengo vasco fluminense 
SAÍDA 
160 
Exemplos – Somando os itens de uma 
lista 
soma = 0 
for x in [1,2,3,4] : 
soma = soma + x 
print(soma) 
Laço 1 
Laço 2 
Laço 3 
Laço 4 
x=1;soma=0+1 
x=2;soma=1+2 
x=3;soma=3+3 
x=4,soma=4+6 10 
SAÍDA 
161 
Exemplos – Somando os números 
pares de uma lista de 1 a 7 
soma = 0 
for x in range(0,7,2) : 
soma = soma + x 
print(soma) 
Laço 1 
Laço 2 
Laço 3 
Laço 4 
x=0;soma=0+0 
x=2;soma=0+2 
x=4;soma=2+4 
x=6,soma=6+6 12 
SAÍDA 
162 
Exemplos – Multiplicando os itens de 
uma lista 
produto = 1 
for item in range(1,5): 
prod * = item 
print(soma) 
Laço 1 
Laço 2 
Laço 3 
Laço 4 
item=1;prod=1*1 
item=2;prod=1*2 
item=3;prod=3*2 
item=4,prod=4*6 24 
SAÍDA 
163 
Exemplos – Iterando em uma String 
frase = 'PAZ' 
for letra in frase : 
print(letra, end = ' ') 
Laço 1 
Laço 2 
Laço 3 
letra=frase[0] 
letra=frase[1] 
letra=frase[2] 
P 
SAÍDA 
P A 
P A Z 
164 
Exemplos – Iterando em um dicionário 
d = {'a':1,'b':2,'c':3}	
for key in d:	
 print(key,'=>',d[key])	
Laço 1 
Laço 2 
Laço 3 
key='a' 
key='c' 
key='b' 
a=> 1 
SAÍDA 
c=> 3 
b=> 2 
165 
Exemplos – Iterando em um conjunto 
c = {'a','b','c'}	
for elemento in c:	
 print(elemento, end=' ')	
Laço 1 
Laço 2 
Laço 3 
elemento='a' 
elemento='c' 
elemento='b' 
a 
SAÍDA 
a c 
a c b 
166 
Exemplos – Acessando a posição de 
um elemento 
frase='uva!'	
i=0	
while i < len(frase):	
 if(frase[i]=="a" or frase[i]=="A"):	
 print(i)	
 i=i+1	
Laço 1 
Laço 2 
Laço 3 
elemento='u' 
elemento='v' 
elemento='a' 
SAÍDA 
2 
167 
Funções 
n  Funções são dispositivos que agrupam um 
conjunto de comandos para que os mesmos 
possam ser executados mais de uma vez 
em um programa. 
 
n  Apresentam um valor como resultado. 
 
n  Especifica argumentos que são parâmetros 
de entrada da função. 
 
 
168 
Por que usar funções ??? 
n  Maximizar o reuso do código. 
n  Minimizar a redundância. 
n  Dividir o programa em partes bem definidas. 
169 
Funções - Comando def 
Este comando cria um objeto função e define 
um nome a este objeto 
 
def <nome> (arg1,arg2,arg3,...,argn): 
 <comandos> 
 return <valor> OPCIONAL 
170 
Funções - Exemplo 
# definindo a função 
def multiplica (x,y) 
return x*y 
 
 
#chamando a função 
prod = multiplica(8,2) 
print(prod) 
 
X 8 
Y 2 
prod 16 
171 
Polimorfismo 
n  É um comportamento dependente de tipo. 
 
n  Uma operação depende dos objetos 
operados. 
 
n  Uma função pode apresentar vários 
objetivos dependendo dos tipos de objetos e 
as operações feitas. 
172 
Polimorfismo - Exemplo 
# definindo a função 
def multiplica (x,y) 
return x*y 
 
#chamando a função com argumentos 
diferentes 
prod = multiplica(8,2) 
replicacao=multiplica('OI',2) 
zeros=multiplica([0],2) 
 
 
173 
Polimorfismo - Exemplo 
def intersecao (seq1,seq2): 
res=[ ] 
for x in seq1: 
 if x in seq2: 
 res.append(x) 
return res 
 
print(intersecao(“SPAM” , ”SCAM”) ) 
print(intersecao( [1,2,3 ], {1,4} ) 
 
 
 
 
 
 
174 
Escopo 
l  Lugar onde as variáveis são definidas e acessadas. 
 
l  Python procura o nome das variáveis em seu 
namespace. 
 
l  Visibilidade do nome em seu código. 
 
l  O trecho de código onde você define um nome para 
a variável determina o namespace que ela estará e 
consequentemente o escopo de visibilidade. 
175 
Regras de Escopo 
Se uma variável é definida dentro de uma def, ela é 
local para esta função. 
 
Se uma variável é definida para um def aninhado, ela 
é não local para as funções aninhadas 
modificarem seu valor. 
 
Se umavariável é definida fora de todos os defs, ela 
é global para o arquivo (módulo) inteiro. 
176 
Regras de Escopo 
Cada módulo é um escopo global para a variável 
definida no topo do arquivo. Estas variáveis globais 
se tornam atributos do módulo objeto para o mundo 
externo e são apenas variáveis dentro do módulo. 
 
Cada chamada a uma função cria um novo escopo 
local. 
 
Variáveis definidas dentro de uma função por padrão 
são locais a menos que sejam declaradas globais 
ou não locais. 
177 
Resolução de Nomes: LEGB 
A procura pela referência de um nome segue a ordem 
dos 4 escopos: 
1.  Local 
2.  Não local 
3.  Global 
4.  Built-in 
178 
Exemplo de Escopos 
#Código do arquivo (módulo) escopo.py 
#escopo global : x é uma variável global 
x=99 
 
def func(y): 
# escopo local : z e y são variáveis locais 
z = x + y # acessando X global 
return z 
 
print(func(1)) # imprime o valor 100 
 
 
179 
Escopo Global 
#Código do arquivo (módulo) escopo.py 
#escopo global : x é uma variável global 
x=99 
 
def func( ): 
global x # acessando X global 
x=88 
 
func() 
print(x) # imprime o valor 88 
 
 
180 
Escopo Global 
#Código do arquivo (módulo) escopo.py 
#escopo global : x é uma variável global 
y , z = 1 , 2 
 
def todas_globais( ): 
global x # acessando X global 
x = y + z 
 
print(x) # imprime o valor 3 
 
 
181 
Acessando variáveis globais de outros módulos 
# módulo primeiro.py 
x= 99 
 
# módulo segundo.py 
import primeiro 
print(primeiro.x) 
primeiro.x=88 
182 
Funções Aninhadas 
 x= 99 # variável global nunca usada 
 
def f1( ) : # funcão pai 
x=88 # variável local 
def f2( ) : # função filha (aninhada) 
 print(x) 
f2() 
 
>>> f1() 
 
183 
Funções Aninhadas 
def f1( ) : # funcão pai 
 x= 99 
def f2( ) : # função filha (aninhada) 
 def f3( ): 
print (x) 
 f3() 
 f2() 
 
>>> f1() 
 
184 
Variáveis não locais 
def teste(inicio): 
estado = inicio # definição de uma variável local 
def teste_filho ( ): 
 nonlocal estado #para poder modificar o valor 
 estado +=1 
 print(estado) 
 
return teste_filho( ) 
 
>>> teste(0) # retorna o valor 1 
 
 
 
185 
Argumentos 
Sao objetos enviados as funções como entradas. 
 
Passagem de objetos imutáveis é feita por valor. 
Exemplo: objetos inteiros, reais e strings. 
 
Passagem de objetos mutáveis é feita por referência. 
Exemplo: listas, conjuntos e dicionários. 
186 
Passagem de argumentos por valor 
def f(a): 
a = 99 
 
b=88 
f(b) 
print(b) # o valor de b não muda 
 
>>> 88 
 
187 
Exemplo sem a chamada de função 
x=1 
a=x 
a=2 
print(x) 
 
>>> 1 
188 
Passagem de argumentos por referência 
def troca (b): 
b[0]='spam' # objeto compartilhado (mutável) 
 
l=[1,2] 
troca(l) 
print(l) 
 
>>> ['spam',2] 
 
189 
Exemplo sem a chamada de função 
L=[1,2] 
b=l 
b[0]='spam' 
print(l) 
 
>>> ['spam',2] 
 
190 
Evitando mudanças nos argumentos imutáveis 
def copia( a ): 
a = a[ : ] # copia a própria lista 
a[0]=5 
a[1]=5 
 
L=[1,2] 
copia(L) 
print(L) 
 
>>>[1,2] 
191 
Modos de Passagem de Argumentos 
Existem várias combinações de argumentos. 
 
Alguns exemplos: 
 
funcao(valor): Argumento definido pela posição 
funcao (nome=valor): Argumento definido pelo nome 
192 
Funcao(valor) 
def f(a,b,c): 
print(a,b,c) 
 
f(1,2,3) 
 
>>> 1 2 3 
193 
Funcao(nome=valor) 
def f(a,b,c): 
print(a,b,c) 
 
f(c=3,b=2,a=1) 
 
>>> 1 2 3 
194 
funcao(nome = valor padrão) 
def f(a=1,b=2,c=3): 
print(a,b,c) 
 
f(2,4) 
 
>>> 2 4 3 
195 
funcao(nome = valor padrão) 
def f(a=1,b=2,c=3): 
print(a,b,c) 
 
f(2,4) 
 
>>> 2 4 3 
196 
Recursividade 
Uma função é recursiva quando chama ela mesma. 
 
Ela deve apresentar dois casos: 
Caso base e o caso recursivo 
197 
Recursividade 
Caso base: É a solução do problema para o caso 
mais simples. 
 
Se não for o caso base: 
l  Quebre o problema em problemas menores. 
l  Carregue uma nova cópia da função para 
trabalhar com os casos menores (chamada 
recursiva) 
l  Convergir para o caso base 
l  Função faz uma chamada para ela mesma 
dentro do retorno da função. 
198 
Recursividade 
Exemplo: fatorial 
n! = n * ( n – 1 ) * ( n – 2 ) * … * 1 
Caso base (1! = 0! = 1) 
 
Caso recursivo: ( n! = n * ( n – 1 )! ) 
5! = 5 * 4! 
4! = 4 * 3! 
3! = 3 * 2! … 
 
 
 
199 
Recursividade 
def fat (n): 
 
 if (n==0 or n==1): # caso base 
 return 1 
 else: # caso recursivo n*(n-1)! 
 return n * fat(n-1) 
 
 
print(fat(5)) 
200 
Números Pseudo-Aleatórios 
Criação de uma função f(x) que gera uma sequência 
de números a partir do valor inicial x. 
 
 X é chamado de semente para gerar a sequência de 
números. 
 
F(x) é chamado de gerador de sequência. 
201 
Exemplo 
def aleat(semente):	
 semente = semente * 1103515245 + 12345 	
 return int((semente / 65536) % 32768)	
	
	
for i in range(0,10):	
 print(aleat(i),end='')	
	
	
>>> 0 16838 908 17747 1817 18655 2726 19564 3634 
20472 	
202 
Módulo Random 
# importando a biblioteca random para ser 
chamada no programa	
import random 	
# Retorna float x, 0.0 <= x < 1.0	
print(random.random()) 	
>>> 0.7974410192661805	
# Retorna float x, 1.0 <= x < 10.0	
print(random.uniform(1, 10)) 	
>>> 6.263809049294528	
# Retorna inteiro n, 0 <= n <=9	
print(random.randint(0,9)) 	
>>> 9	
 	
Módulo Random 
# Retorna um inteiro determinado pelo range 
print(random.randrange(0, 101, 2)) 
>>> 30 
 
# Retorna um elemento de uma sequência não vazia 
print(random.choice("abcdefghij")) 
>>> c 
print(random.choice(range(0,1000))) 
>>> 266 
print(random.choice([1,2,3,4,5,6,7])) 
>>> 4 
 
OBRIGADO!

Outros materiais