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

Outros materiais