0% acharam este documento útil (0 voto)
23 visualizações

Workshop Python

O documento apresenta uma introdução ao Python, abordando tópicos como instalação, variáveis, tipos de dados, operadores, condicionais, laços, funções, módulos, classes e estruturas de dados.

Enviado por

Joismar Braga
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
23 visualizações

Workshop Python

O documento apresenta uma introdução ao Python, abordando tópicos como instalação, variáveis, tipos de dados, operadores, condicionais, laços, funções, módulos, classes e estruturas de dados.

Enviado por

Joismar Braga
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 28

Workshop Python

Pt 1 - Introdução ao Python
O que veremos?
Introdução ao Python
Instalando Python;
Entendendo o Python e o Interpretador (REPL);
Variáveis, tipos de dados e operadores lógicos e matemáticos;
Entrada e saída;
Condicionais (if, elif e else);
Laços (while e for);
Funções e Métodos;
Estruturas de dados (lista, dicionário, tupla, set);
Classes;
Tratamento de erros e exceções;
Conhecendo o Jupyter Lab.
Instalando Python 3.7 no Windows
Download
https://www.python.org/downloads/release/python-379/
Instalando Python 3.7 no Windows
Install
Certifique-se de marcar “Add Python 3.7 to PATH”, caso queira mudar o local de instalação
clique em “Customize installation”.

Após instalado, vá ao CMD e


digite python para iniciar o
interpretador.
Entendendo o Python
Python é uma linguagem de programação de alto nível, interpretada de script,
imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte. Foi
lançada pelo holandês Guido van Rossum em 1991. Atualmente, possui um
modelo de desenvolvimento comunitário, aberto e gerenciado pela organização
sem fins lucrativos Python Software Foundation.
Entendendo o Interpretador (REPL)
Quando baixamos um Python, ele vem com uma pequena IDE chamada IDLE, mas
não vamos usar ela.
O REPL, ou read-eval-print loop, Loop de leitura, avaliação e impressão, é um shell
interativo que diversas linguagens tem, com ela podemos testar comandos básicos
da linguagem.
Usaremos a IDE online repl.it para testar nossos códigos em tempo real e
compartilhado.
Variáveis
# Variable Types
#
name = 'Cabeça' + " de" # str
surname = name + '''Plástico''' # str
age = 42 # int
star = 4.2234 # float
isAdmin = True # bool

print(type(name))
print(type(surname))
print(type(age))
print(type(star))
print(type(isAdmin))
Métodos <str>
# String Methods
#
print('{0} tem {1} anos de idade.'.format(name, age))
print('{} tem {} anos de idade.'.format(name, age))
print('{name} tem {age} anos de idade.'.format(name=name, age=age))
print(f'{name} tem {age} anos de idade.')

# Definir a precisão de um decimal


print('{0:.2f}'.format(star)) # Retorna 4.22

# Preencher texto com underlines


print('{0:_^11}'.format('hello')) # Retorna ‘____hello____’

# Quebra de linha e "\"


print('''
Isso é um texto com
quebra de linha.
''')
print('Isso tbm é um texto \ncom quebra de linha.\n')
Operadores lógicos e matemáticos
# Operadores Matemáticos # Operadores Lógicos
# #
print(2 + 2) # Retorna 4 print(5 < 3) # Retorna False
print(2 - 2) # Retorna 0 print(5 > 3) # Retorna True
print(2 * 2) # Retorna 4 print(5 <= 3) # Retorna False
print(2 ** 3) # Retorna 8 print(3 >= 3) # Retorna True
print(10 / 3) # Retorna 3,333... print(5 == 3) # Retorna False
print(10 // 3) # Retorna 3 print(True and False) # Retorna Falso
print(10 % 3) # Retorna 1 print(True or False) # Retorna True
print(not True) # Retorna False
Condicionais
if True: print(False) OUTPUT 1

numero = 23 False
resposta = int(input('Insira um numero inteiro: ')) Insira um numero inteiro: 25
Errado, o número é menor.
# Inicio do bloco IF Concluído.
if resposta == numero:
print('Parabéns, você acertou!') OUTPUT 2
elif resposta > numero:
print('Errado, o número é menor.') False
else: Insira um numero inteiro: 23
print('Errado, o número é maior.') Parabéns, você acertou!
# Fim do bloco IF Concluído.

print('Concluído.')
Laço while
numero = 23 OUTPUT
rodando = True

Insira um numero inteiro: 26


while rodando:
resposta = int(input('Insira um numero inteiro: ')) Errado, o número é menor.
# Inicio do bloco IF Insira um numero inteiro: 24
if resposta == numero:
Errado, o número é menor.
print('Parabéns, você acertou!')
rodando = False Insira um numero inteiro: 23
elif resposta > numero: Parabéns, você acertou!
print('Errado, o número é menor.') O loop terminou.
else:
Concluído.
print('Errado, o número é maior.')
# Fim do bloco IF

else:
print('O loop terminou.')

print('Concluído.')
Laço for continue
for i in range(1, 5): while True:
print(i) s = input('Escreva algo: ')
else: if s == 'quit':
print('O laço abacou.') break # Sai do laço
if len(s) < 3:
print('Muito pequeno.')
continue # Pula para próxima iteração
break print('Entrada maior que 3.')
# Faça outras coisas aqui...
while True:
s = input('Digite algo: ')
if s == 'quit':
break # Sai do laço
print('O tamanho da string é ', len(s))
print('Feito!')
Funções
# Funções # Recebe 2 valores e mostra se são iguais ou quem é
# o maior e que é o menor.
def diga_ola(nome): #
print(f'Olá, {nome}') def max_min(a, b):
if a == b:
def salva_arquivo(path='C:\\temp'): print(a, 'é igual a', b)
try: elif a > b:
# Salvar arquivo... print(a, 'é maior')
print(f'Arquivo salvo com sucesso em {path}') print(b, 'é menor')
return True else:
except: print(b, 'é maior')
# Recuperar erro... print(a, 'é menor')
print('Erro ao salvar o arquivo.')
return False max_min(3, 3) # Retorna ‘3 é igual a 3’
Escopo local Escopo global
# Escopo local # Escopo global
x = 50 x = 50

def func(x): def func():


print('x é', x) global x
x = 2
print('Variável local x é', x) print('x é', x)
x = 2
func(x) print('Alterando variável global x para', x)
print('x ainda é', x)
func()
print('Valor de x é', x)
Parâmetros varArgs
# * cria uma lista de argumentos func(10, 1, 2, 3, Jack=1123, John=2231, Inge=1560)
# ** cria uma lista de argumentos com chave
def func(primeiro_numero=5, *numeros, **agenda): OUTPUT
print('primeiro_numero:', primeiro_numero)
primeiro_numero: 10
# itera sobre itens de uma tupla ou lista numero: 1
for numero in numeros: numero: 2
print('numero:', numero) numero: 3
Jack 1123
# itera sobre itens de um dicionario John 2231
for nome, numero in agenda.items(): Inge 1560
print(nome, numero)
Módulos
# Módulo modulo.py ~/Workshop-Python$ python modulo.py arg1 arg2
Os argumentos da linha de comando foram:
import sys
modulo.py
arg1
__version__ = '0.1' arg2

A PYTHOPATH é [...paths]
print('Os argumentos da linha de comando foram:')
for i in sys.argv: O módulo está rodando por ele mesmo.
print(i)

# Módulo main.py
print('\n\nA PYTHOPATH é', sys.path, '\n') import modulo

if __name__ == '__main__': # Retorna:


# Os argumentos da linha de comando foram:
print('O módulo está rodando por ele mesmo.') # main.py
else: #
print('O módulo foi importado de outro módulo.') # A PYTHOPATH é [...paths]
#
# O módulo foi importado de outro módulo.
Estruturas de Dados <list>
# Lista de compras # Ordenando a lista
# lista.sort()
lista = ['maçã', 'manga', 'cenoura', 'banana'] print('Lista ordenada:', lista)

# Acessando valores por índices


print('Você tem', len(lista), 'items para print('Primeiro valor da lista:', lista[0])
comprar.') item_comprado = lista[0]

print('Esses items são:', end=' ') # Removendo valor da lista


del lista[0]
for item in lista:
print('Eu comprei', item_comprado)
print(item, end=' ')
print('Lista:', lista)

# Eu tbm preciso comprar arroz # Ou simplesmente removendo e atribuindo


lista.append('arroz') item_comprado = lista.pop(0)
print('Minha lista de compras agora é:', lista) print('Eu comprei', item_comprado)
print('Lista:', lista)
Estruturas de Dados <tuple>
# A tupla se comporta muito semelhante a lista, porém ela é imutável
zoo = ('python', 'elephant', 'penguin')

print('O número de animais é', len(zoo))

print('O segundo animal do zoo é', zoo[1])

# Tuplas também podem ser definidas sem os parênteses


zoo = 'python', 'elephant', 'penguin'
Estruturas de Dados <dict>
# Dicionário de contatos # Iterando sobre um dicionário
for nome, email in contatos.items():
contatos = { print('Contato {} em {}'.format(nome, email))
'jois': 'joismar.braga@parvi.com.br',
'vini': 'vinicius.silva@parvi.com.br', # Adicionando um par de chave:valor
'eli': 'eliezer.junior@parvi.com.br',
contatos['gui'] = 'guido@python.org'
'alan': 'alan.marinho@parvi.com.br'
}
# Verificando se há uma chave no dicionário
if 'gui' in contatos:
print("O email de Alan é", contatos['alan'])
print("\nO email de Guido é", contatos['gui'])
# Deletando um par de chave:valor
del contatos['vini']

print('\nVocê tem {} contatos na sua lista de


contatos\n'.format(len(contatos)))
Estruturas de Dados <set>
# Set de paises OUTPUT
#
paises = set(['brazil', 'russia', 'india']) False
True
# Faz uma copia de paises e atribui a outra variável
{'india', 'brazil'}
paises_copia = paises.copy()
{'india', 'brazil'}
# Verifica se tem USA em paises
print('usa' in paises) # Retorna False

# Adiciona china no novo set


paises_copia.add('china')

# Verifica se paises está contido em paises_copia


print(paises_copia.issuperset(paises)) # Retorna True

# Remove russia
paises.remove('russia')

print(paises & paises_copia) # Retorna {'brazil', 'india'}


print(paises.intersection(paises_copia)) # Retorna {'brazil', 'india'}
Indexação
shoplist = ['apple', 'mango', 'carrot', 'banana'] # Partindo uma lista
name = 'swaroop' print('Itens de 1 até 3 são', shoplist[1:3])
print('Itens de 2 até o fim são', shoplist[2:])
# Indexando com subscrição [] print('Itens de 1 até -1 são', shoplist[1:-1])
print('Item 0 é', shoplist[0]) print('Itens de começo até fim são', shoplist[:])
print('Item 1 é', shoplist[1])
print('Item 2 é', shoplist[2]) # Partindo uma string
print('Item 3 é', shoplist[3]) print('Letras de 1 até 3 são', name[1:3])
print('Item -1 é', shoplist[-1]) print('Letras de 2 até fim são', name[2:])
print('Item -2 é', shoplist[-2]) print('Letras de 1 até -1 são', name[1:-1])
print('Letra 0 é', name[0]) print('Letras de começo até fim', name[:])
Classes
Programação Orientada a Objetos
Estruturada Orientada a Objetos
def captura_dados(busca, pagina, browser): class Bot:
'''Recebe uma string de busca e uma página retorna os dados def __init__(self, url, busca, paginas):
''' self.url = url
self.busca = busca
pass
self.paginas = paginas
self.dados = None
def inicia_bot(url, busca, paginas, browser): self.__browser = cria_browser()
'''Acessa a URL e itera sobre as paginas retorna os dados self.inicia_bot()
iterados
def inicia_bot(self):
'''
for pagina in range(self.paginas):
dados = []
self.dados = self.__captura_dados(pagina)
for pagina in range(paginas):
dados.append(captura_dados(busca, pagina, browser)) def __captura_dados(self, pagina):
pass
url = 'https://www.kabum.com.br/'
if __name__ == '__main__':
busca = 'teclado gamer'
bot = Bot('https://www.kabum.com.br/', 'teclado gamer',
paginas = 5
paginas=5
)
browser = cria_browser() bot.inicia_bot()
inicia_bot(url, busca, paginas, browser) dados = bot.dados
Classes - Só o básico
# Classe Person # __init__ method
class Person:
class Person:
pass population = 0 # Variável de Classe

def __init__(self, name):


# Método de objeto inicializado self.name = name # Variável de Objeto
Person.population += 1
class Person:
def say_hi(self): @classmethod
def how_many(cls):
print('Hello, how are you?') print(Person.population)

p = Person('Jão') \ p2 = Person('Zé')
p = Person()
p.say_hi() p.name # Retorna "Jão" \ p2.name # Retorna "Zé"

Person.how_many() # Printa 2
POO - 4 Pilares
# ABSTRAÇÃO # ENCAPSULAMENTO

➤ Identidade; ➤ Propriedades privadas;

➤ Propriedades; ➤ getters e setters;

➤ Métodos. ➤ Segurança.

# HERANÇA # POLIMORFISMO

➤ Reuso; ➤ Mesmo tipo de objeto, propriedades e


➤ Classe atômica. métodos distintos;
Classes - Exemplos
# ABSTRAÇÃO # ENCAPSULAMENTO

class Bot: class Bot:


# O nome da classe deve ser único e deve refletir com def __init__(self, url, busca, paginas):
coerência o seu propósito self.url = url
def __init__(self, url, busca, paginas):
self.busca = busca
self.url = url # atributo/propriedade
self.paginas = paginas
self.busca = busca # atributo/propriedade
self.paginas = paginas # atributo/propriedade self.dados = None # atributo público
self.dados = None # atributo/propriedade self.__browser = cria_browser() # atributo privado
self.__browser = cria_browser() self.inicia_bot()
self.inicia_bot()
def inicia_bot(self): # método público
def inicia_bot(self): # método for pagina in range(self.paginas):
for pagina in range(self.paginas): self.dados = self.__captura_dados(pagina)
self.dados = self.__captura_dados(pagina)
def __captura_dados(self, pagina): # método privado
def __captura_dados(self, pagina): # método
pass
pass
Classes - Exemplos
# HERANÇA e POLIMORFISMO class BotPrecos(Bot):
def __init__(self, url, paginas, busca):
class BotWeb: Bot.__init__(self, url, paginas)
def __init__(self, url, paginas): self.busca = busca
self.dados = None
self.url = url def captura_dados(self):
# faz captura de dados específica
self.paginas = paginas

class BotTelefone(Bot):
def inicia_bot(self): def __init__(self, url, paginas):
self.dados = self.captura_dados() Bot.__init__(self, url, paginas)

def captura_dados(self):
# faz captura de dados específica
Por hoje é só...
Obrigado!

Você também pode gostar