Aulas Python 2023
Aulas Python 2023
1
Bibliografia
3
Python
◼ Produtividade de desenvolvimento
Menor esforço de programação
Maior velocidade de implementação
4
Python
5
Python
6
Python
◼ Vantagens
OO
Open Source
Independente de plataforma
Fácil de usar
Fácil de aprender
7
Interpretador Python
◼ Execução do programa
Visão do Desenvolvedor
Visão do Processo
◼ Download
http://www.python.org
Versão 3.X
8
Não existe distinção entre o
ambiente de desenvolvimento
e execução.
Experiência de programação
dinâmica
Fluxo de Dados
Entrada Saída de
Programa
de Dados Dados
Aprendizado Inicial Sobre
Funções
11
Interface I/O
13
Objetos
◼ Tipos principais
Numérico
String
Lista
Dicionário
14
Objetos
◼ Tipos principais
Tuplas
Arquivos
Conjuntos
Boolean
15
Tipo Numérico
◼ Números inteiros.
◼ Números reais.
◼ Números complexos.
16
d = 1234
Números ◼
◼ d=0
Inteiros ◼ d = - 10
◼ d = 1234659786597431235997412949
17
◼ Conhecidos como ponto flutuante
◼ Possui o ponto decimal “.”
◼ Expoente é definido por “e” ou “E” seguido
Números opcionalmente pelo sinal
reais ◼
◼
d = 1.23
d = 1.
◼ d = 1.0
18
Operadores de expressões
19
Quando uma expressão
Precedência ◼
envolve mais de um operador,
Python agrupa suas partes de
dos acordo com as regras de
precedência. Estas regras
operadores determinam a ordem com que
estas partes serão
computadas.
20
Precedência ◼ X +Y*Z
◼ Primeiramente Python realiza a
dos multiplicação de Y e Z, para
depois somar com X.
operadores ◼ Isto porque “*” tem uma
precedência maior do que “+”.
21
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.
22
Misturando tipos numéricos
23
Misturando tipos numéricos
24
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
25
◼ São criadas quando elas
recebem um valor pela primeira
vez
◼ São substituídas por seus
valores quando usadas em
expressões
Variáveis ◼ Devem ser criadas antes de
serem usadas em expressões
◼ Variáveis estão referenciando
objetos.
26
Variáveis e
Expressões
Básicas
27
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.
28
Divisões
29
Funções de Conversão e
Arrendodamento
30
Ferramentas
numéricas
◼ pré-definidas
Funções que estão disponíveis
quando executamos o
interpretador
◼ Bibliotecas numéricas
Módulos criados para atender
diferentes áreas
31
Bibioteca
•
math •
Funções trigonométricas
Funções Logarítmicas
• Conversões Angulares
• Representações numéricas
• Funções Especiais
• Funções Hiperbólicas
• Constantes
32
Floor x
Truncamento
Tipo Booleano
True ou
1 ou 0
False
Comparações
35
Comparações
36
Comparações
37
◼ Complementação (ou
Negação, ou Inversão)
Operação cujo
resultado é
simplesmente o valor
complementar ao que a
Álgebra variável apresenta.
Booleana Como uma variável
booleana pode assumir
um entre dois valores,
caso assuma o valor 1
(True), seu
complemento é 0
(False) e vice-versa.
◼ AND (Multiplicação Lógica)
Esta operação binária
resulta em 0 (False)
caso pelo menos uma
entrada seja 0 (False)
Álgebra
Booleana ◼ 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)
◼ XOR
Esta operação
binária resulta em
Álgebra 1(True) caso as
Booleana entradas possuam
valores diferentes,
caso contrário o
resultado é 0(False)
Tabela Verdade
41
Exemplo de
Código
42
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.
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.
• Comandos Condicionais
x=8; y=5
TESTE, o '()'é opcional
print(“Fim do programa.”) 47
Delimitadores de Bloco:
Regras de indentação
x=1
If x :
y=2
If y:
print(“bloco 2”)
print(“bloco 1”)
print(“bloco 0”)
IF/ELSE
If ( not 1) :
print('true')
else :
print('false')
IF/ELIF/ELSE
If (teste 1) :
Bloco 1
elif (teste 2): # Comando opcional
Bloco 2
else : # Comando opcional
Bloco 3
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 ...')
Comando Ternário
If x: a = y if x else z
a=y
else:
a=z
d=5;f=6 d=5;f=6
if(d > f): x=d if (d>f) else f
x=d
else:
x=f
52
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.
Tipo String
◼ Strings com aspas simples ou duplas são as
mesmas
>>> “aluno”, ‘aluno’
('aluno', 'aluno')
s ='spam'
s=s*2
print(s)
◼ 'spamspam'
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 (\)
◼ >>> 'knight\'s',
"knight\"s"
◼ ("knight's", 'knight"s')
Sequencias
de Escape s= 'a\nb\tc‘
print(s)
◼ a
◼ b c
◼ Aspas triplas
Também chamado
Tipo
de “block string”
É uma conveniência
String sintática para
codificar textos em
várias linhas.
Tipo String
◼ Aspas triplas
frase=""" Estou aprendendo
a programar
Python"""
' Estou aprendendo\na programar\nPython'
◼ Comprimento da string
Funções s="abcdefghij"
Pré- tam = len(s)
Definidas print(tam)
10
◼ Remover espaços em
branco
Funções s=" parado "
Específicas print(s.strip())
'parado‘
◼ Substituições na String
s="bala“
Funções s.replace('a','o')
Específicas print(s)
'bolo'
Começa com uma
substring
• s="paralelepípedo“
• s.startswith('pa')
Funções • True
Específicas Termina com uma
substring
• s="paralelepípedo“
• s.endswith('do')
• True
◼ Verificar se a String é um
número inteiro
s="8080"
teste =s.isdigit()
Funções print(teste)
Específicas True
s="98e"
teste2 =s.isdigit()
print(teste2)
False
◼ Todas as letras maiúsculas ou
minúsculas.
nome="Super Python"
Funções print(nome.upper())
Específicas 'SUPER PYTHON'
print(nome.lower())
'super python'
◼ String vazia
s=“”
Qual função usar ??
69
Comando de Repetição - WHILE
O teste sempre é
avaliado antes de um
O loop pode ser infinito
novo loop ser iniciado,
caso o teste nunca seja
portanto caso na primeira
falso.
vez ele seja falso, o loop
nunca será executado.
70
WHILE- Sintaxe
71
WHILE- Sintaxe
72
WHILE - Exemplos
while True:
print('Adeus')
while 1:
print('Adeus')
73
Exemplo – Imprimindo os números de
0a9
n=0 ; max=10
while (n < max) :
print(n, end=' ') # saída na mesma linha
n+=1
INÍCIO DO LOOP SAÍDA FIM DO LOOP
74
Laço 10: 9 < 10 ? n=9 01…9 n=10
Comandos de Desvio
Break/Continue/Pass
75
Comandos de Desvio – Formato
Geral
while (teste 1) :
bloco 1
if (teste 2): continue
if (teste 3): break
else :
bloco 2
76
Pass
while 1:
pass #TODO: print('Adeus')
77
Break
while True:
nome=input('Entre com um nome ?')
if(nome =='stop'):
print("Fim do Programa")
break
idade=input('Entre com uma idade')
print('Nome:', nome,'Idade: ', idade )
78
Continue
79
Loop Else -Exemplo do programa para
identificar se um número > 2 é primo
80
Comando For
81
Sintaxe
Caso um break
não seja executado
82
for variável in objeto :
instruções
if (teste): break
Sintaxe if (teste):continue
else:
instruções
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 x=0;soma=0+0
Laço 2 x=2;soma=0+2
Laço 3 x=4;soma=2+4
SAÍDA
84
Laço 4 x=6,soma=6+6 12
Exemplos – Multiplicando os itens de
uma lista
prod = 1
for item in range(1,5):
prod * = item
print(prod)
Laço 1 item=1;prod=1*1
Laço 2 item=2;prod=1*2
Laço 3 item=3;prod=3*2
SAÍDA
85
Laço 4 item=4,prod=4*6 24
Exemplos – Iterando em uma String
frase = 'PAZ'
for letra in frase :
print(letra, end = ' ')
SAÍDA
Laço 1 letra='P' P
Laço 2 letra='A' PA
86
Tipo Conjunto
Coleção não ordenada de objetos únicos Por definição, um item aparece apenas
e imutáveis que suportam operações uma vez no conjunto, não importando
correspondentes a Teoria dos Conjuntos quantas vezes ele foi adicionado.
87
Tipo Conjunto
x=set('abcde')
y=set('bdxyz')
print(x)
◼ {'a', 'c', 'b', 'e', 'd'}
print(y)
◼ {'y', 'x', 'b', 'd', 'z'}
'e' in x #pertence
◼ True
88
Métodos do Tipo
Conjunto
s1 = {1,2,3,4}
s1.add(5)
print(s1)
◼ {1, 2, 3, 4, 5}
s1.remove(1)
print(s1)
◼ {2, 3, 4, 5}
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'}
Tipo Conjunto
x ^y #Diferença simétrica
{'a', 'c', 'e', 'y', 'x', 'z'}
x > y, x < y #SuperConjunto, SubConjunto
◼ (False, False)
Exemplos – Iterando em um conjunto
c = {'a','b','c'}
for elemento in c:
print(elemento, end=' ')
SAÍDA
Laço 1 elemento='a' a
Laço 2 elemento='c' ac
92
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
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.
◼ Variação do tamanho da lista
◼ A lista pode conter outros objetos complexos
como uma própria lista.
Tipo Lista
l = [] # lista vazia
l = [1,2,3,4] # 4 itens, índice: 0...3
print(l)
◼ [1, 2, 3, 4]
96
Tipo Lista
l= list(range(-5,5)) # sucessivos inteiros
print(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
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']
98
Operações básicas
◼ Repetição
print( ['NI'] * 4)
['NI', 'NI', 'NI', 'NI']
print(['NI',8,['A',3]] * 2)
['NI', 8, ['A', 3], 'NI', 8, ['A', 3]]
Operações básicas
3 in [1,2,3]
◼ True
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'
◼ A fatia resultante é uma
nova lista contendo os
elementos cujas
posições vão do primeiro
frase='Adeus!'
while frase:
print(frase)
frase=frase[1:] SAÍDA
matriz[2][0]
◼ 7
Tipo Lista
◼ Modificando uma lista
L = ['spam','Spam','SPAM']
L[1]='eggs'
['spam', 'eggs', 'SPAM']
L[0:2]=['eat','more']
['eat', 'more', 'SPAM']
Métodos
L=[1,2]
L.extend([3,4,5])
◼ [1, 2, 3, 4, 5]
Métodos L.pop()
◼ 5
◼ [1, 2, 3, 4]
L.reverse()
Métodos ◼ [4, 3, 2, 1]
L.remove('eggs') #Deleta pelo valor
◼ ['spam','eggs','ham']
Métodos L.pop(1) #Deleta pela posição
◼ ['spam','ham']
L=['spam','eggs','ham']
L.index('eggs') #Índice do objeto
Métodos ◼ 1
L.insert(1, 'toast')# Insere na posição
◼ ['spam','toast','eggs','ham']
Exemplos – Acessando os elementos
for x in [“flamengo”,”vasco”,”fluminense”]:
print (x, end=” ”)
SAÍDA
113
Exemplos – Somando os itens de uma
lista
soma = 0
for x in [1,2,3,4] :
soma = soma + x
print(soma)
Laço 1 x=1;soma=0+1
Laço 2 x=2;soma=1+2
Laço 3 x=3;soma=3+3
SAÍDA
114
Laço 4 x=4,soma=4+6 10
Exemplos – Acessando a String como
se fosse uma lista
frase='uva!'
i=0
while i < len(frase):
if(frase[i]=="a" or frase[i]=="A"):
print(i)
SAÍDA
i=i+1
Laço 1 elemento='u'
Laço 2 elemento='v'
Laço 3 elemento='a' 2
115
Itens são armazenados e
resgatados através de
chaves.
Mapeamento de chaves
para valores.
116
Valor único.
Acesso ao valor
Chaves somente pela
chave.
117
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}
118
Operações básicas
119
Ações
print(D)
◼ {'eggs': 3, 'ham': 1, 'spam': 2}
D['ham']=['grill','bake','fry'] #Entrada
print(D)
◼ {'eggs': 3, 'ham': ['grill', 'bake', 'fry'], 'spam': 2}
120
Ações
121
Métodos
D = {'spam':2,'ham':1,'eggs':3}
print(list(D.values())) # Listando os valores
◼ [3, 1, 2]
print(list(D.items())) #Listando as tuplas
◼ [('eggs', 3), ('ham', 1), ('spam', 2)]
122
Métodos
123
Dicionário – Métodos
print(D)
◼ {'eggs': 3, 'ham': 1, 'spam': 2}
D2={'toast':4, 'muffin':5}
D.update(D2) #Atualizando
print(D)
◼ {'toast': 4, 'muffin': 5, 'eggs': 3, 'ham': 1, 'spam': 2}
124
Dicionário – Métodos
D3={'spam':0,'toast':6}
D.update(D3) # Atualizando
print(D)
◼ {'toast': 6, 'ham': 1, 'spam': 0, 'muffin': 5, 'eggs': 3}
125
Dicionário – Métodos
126
Estrutura de Dados
pessoa={
'nome':'Fulano',
'idade':32,
'emprego': ['analista','advogado'],
'endereco':{'pais':'Brasil','estado':'RJ',
'cep':8053}
}
127
Estrutura de Dados
print(pessoa['nome'])
◼ 'Fulano'
print(pessoa['emprego'][1])
◼ 'advogado'
print(pessoa['endereco']['estado'])
◼ 'RJ'
128
Exemplos – Iterando em um dicionário
d = {'a':1,'b':2,'c':3}
for key in d:
print(key,'=>',d[key])
SAÍDA
129
Funções
130
Por que usar funções ???
131
Funções - Comando def
132
Funções - Exemplo
# definindo a função
def multiplica (x,y)
return x*y
X 8
#chamando a função
prod = multiplica(8,2)
Y 2
print(prod)
133
prod 16
Polimorfismo
134
Polimorfismo - Exemplo
# definindo a função
def multiplica (x,y)
return x*y
135
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} )
136
Escopo
137
Regras de Escopo
138
Regras de Escopo
139
Resolução de Nomes: LEGB
140
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
141
Escopo Global
def func( ):
global x # acessando X global
x=88
func()
print(x) # imprime o valor 88
142
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
todas_globais()
print(x) # imprime o valor 3
143
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
144
Funções Aninhadas
f1()
145
Funções Aninhadas
f1()
146
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 estado
return teste_filho( )
147
Argumentos
148
Passagem de argumentos
por valor
def f(a):
a = 99
b=88
f(b)
print(b) # o valor de b não muda
149
Exemplo sem a chamada de
função
x=1
a=x
a=2
print(x)
>>> 1
150
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]
151
Exemplo sem a chamada de
função
l=[1,2]
b=l
b[0]='spam'
print(l)
>>> ['spam',2]
152
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]
153
Modos de Passagem de
Argumentos
Alguns exemplos:
154
Funcao(valor)
def f(a,b,c):
print(a,b,c)
f(1,2,3)
>>> 1 2 3
155
Funcao(nome=valor)
def f(a,b,c):
print(a,b,c)
f(c=3,b=2,a=1)
>>> 1 2 3
156
funcao(nome = valor padrão)
def f(a=1,b=2,c=3):
print(a,b,c)
f(2,4)
>>> 2 4 3
157
funcao(nome = valor padrão)
def f(a=1,b=2,c=3):
print(a,b,c)
f(2,4)
>>> 2 4 3
158
Recursividade
159
Recursividade
160
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! …
161
Recursividade
print(fat(5))
162
Números Pseudo-Aleatórios
163
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
164
# importando a biblioteca random para
ser chamada no programa
import random
# Retorna float x, 0.0 <= x < 1.0
print(random.random())
>>> 0.7974410192661805
165
# Retorna um inteiro determinado pelo
range
print(random.randrange(0, 101, 2))
>>> 30
# Retorna um elemento de uma sequência
Módulo não vazia
print(random.choice("abcdefghij"))
Random >>> c
print(random.choice(range(0,1000)))
>>> 266
print(random.choice([1,2,3,4,5,6,7]))
>>> 4
166
Obrigado !