Lógica de Programação em
Python
Turicas aka Álvaro Justen
Natália Mazotte
12ª Conferência da ABRAJI
01 de julho de 2017 - São Paulo/SP
Turicas, prazer! =)
Sigam-me os bons:
{ ,
,
,
,
}
/turicas
twitter
github
youtube
slideshare
instagram
turicas@pythonic.cafe
Blog: turicas.info
+55 41 999 311 221
(Signal, Telegram, WhatsApp)
Natália Mazotte
twitter.com/NataliaMazotte
github.com/ncortezrj
ncortezrj@gmail.com
escoladedados.org
generonumero.media
pythonic.cafe
youtube.com/c/PythonicCafe
Python
E vocês?Qual seu nome?
Já tem algum conhecimento de programação? E Python?
Quais são seus objetivos?
Cadastre em: bit.ly/python-abraji12
ObjetivosProgramação: para que serve?
Quebrar o gelo: não é complicado, é complexo
Até onde dá pra ir?
Parte 1:
Contextualização
Duas histórias...
Quando usar Python?
Quando o Excel/Spreadsheet/etc. não dá conta
Muitos dados
Filtros muito complexos
Quando tem muita repetição de tarefas chatas
Como Python Pode Ajudar Na
Jornada?
PythonLinguagem de programação
Criada por Guido Van Rossum no m da década de 80
GNU/Linux e Mac OS X: já vem instalado
Instalar
python.org
Entrevistei Guido van Rossum!
Em breve em youtube.com/c/PythonicCafe
Fonte:
Programming Language?
github.com/stereobooster/programming-languages-
genealogical-tree
Python - Características
Software livre
Fácil de aprender
Propósito geral
Largamente utilizada (mercado em alta)
Comunidade incrível (pessoas)
Baterias incluídas
Python - Quem usa?
Google
NASA
Mozilla Foundation
Globo.com
Dropbox
... (dá pra car até amanhã falando) ...
Python - Comunidade
Grupos no Telegram:
Diversos grupos locais
No Facebook:
(o cial da APyB)
Associação Python Brasil (APyB)
python-brasil no Google Groups
pybr - roda de conversa
PyCoding pt_BR
Data science e Python
Página PythonBrasil
Grupo Python Brasil - Programadores
Python - Eventos
Nível regional:
(Ribeirão Preto/SP - já foi)
(2017: São Luís/MA - já foi)
(2017: Rio de Janeiro/RJ - já foi)
(2017: Manaus)
(2017: Caxias do Sul/RS)
Nível nacional:
(2017: Belo Horizonte/MG)
...
Caipyra
Python Nordeste
Python Sudeste
PyCon Amazônia
Python Sul
Python Brasil
PyConUS
PyConAr
Parte 2:
Lógica de Programação
Lógica de
programaçãoProgramas são conjuntos de algoritmos
Algoritmos são receitas de bolo
Compostos por instruções
"Modo de preparo" da receita
InstruçõesComeçam com verbo
Simples, passo-a-passo (imagine ensinar a uma criança)
Não ambíguas
Exemplos:
Inspirar por 5 segundos
Fechar os olhos
Expirar lentamente
Editor de textoOnde programadores escrevem os programas
Instrução: Baixar Notepad++
ExercícioCriar um algoritmo para escovar os dentes
Um verbo por frase/instrução
Instruções simples
Resolução
Se o tubo de pasta de dentes estiver vazio:
Pegar um tubo novo na dispensa
Senão:
Pegar o tubo de pasta de dentes no armário
Abrir o tubo
Pegar a escova de dentes
Colocar pasta na escova
Fechar o tubo
Abrir a torneira
Molhar a escova por 2 segundos
Fechar a torneira
Levar a escova à boca
Repetir para cada dente:
Movimentar a escova de maneira circular
Ir para o próximo dente
Escovar a língua
Abrir a torneira
ObservaçõesLinguagem não formal
Variáveis (nomes)
Boas práticas
Granularidade ("nível")
Estruturas de
controle de uxoEnquanto ...
E se ...
Nem só de
instruções vive o
computadorProcessador
Memória RAM
HD/SSD
Entrada/saída (rede etc.)
Parte 3:
Introdução a Python!
Primeiro Verbo em Python
print
Arquivo: hello.py
print("Olá, ABRAJI!")
cygwin64 Terminal
print?
Estrutura dos
ProgramasEntrada
MÁGICA
Saída
Código + dados
Saudando pelo nome
Arquivo: hello2.py
nome = input("Qual seu nome?")
print("Olá, " + nome) # o "+" junta duas strings
# isso é um comentário e o Python vai ignorá-lo
Computando (2)
Arquivo: soma.py
valor1 = input("Digite um número:")
valor2 = input("Digite outro número:")
print(valor1 + valor2)
Tipos de Dados
Strings (str)
Exemplo: "Álvaro"
Números inteiros (int)
Exemplo: 42
Números racionais (float)
Exemplo: 3.14
Números complexos (complex)
Exemplo: 1 + 2j
Listas (list)
Exemplo: [1, 2, 3]
Dicionários (dict)
Exemplo: {"linguagem": "python", "resposta": 42}
...
Computando (2) - Corrigido
Arquivo: soma.py
# lembra de f(g(x))?
valor1 = int(input("Digite um número:"))
valor2 = int(input("Digite outro número:"))
print(valor1 + valor2)
Operadores Matemáticos
Válidos para tipos de dados numéricos
+: soma
-: subtração
*: multiplicação
/: divisão
**: exponenciação
%: resto da divisão
//: divisão inteira
( e ): mudam precedência
(2 + 5) * 6
E se... ?
Arquivo: soma2.py
valor1 = int(input("Digite um número:"))
valor2 = int(input("Digite outro número:"))
if valor1 < 0 or valor2 < 0:
print("Um dos valores é negativo!")
else:
print("Todos valores são positivos!")
print("Soma: " + str(valor1 + valor2))
Operadores Lógicos
Resultam em verdadeiro/falso
<: menor que
>: maior que
<=: menor ou igual que
>=: maior ou igual que
==: igual
!=: diferente
or
and
not
Exercício
Arquivo: media.py
Ler 2 números inteiros
Mostrar a média
Exercício
Arquivo: media2.py
Ler 3 números racionais
Trocar int por float
Mostrar a média
Computando (3)
Arquivo: media3.py
valor1 = float(input("Digite um número:"))
valor2 = float(input("Digite outro número:"))
valor3 = float(input("Digite outro número:"))
valores = [valor1, valor2, valor3] # uma lista!
print(sum(valores) / len(valores))
# sum: soma todos os elementos da lista
# len: tamanho da lista (número de elementos)
Repetindo comandos
Arquivo: media4.py
valor1 = float(input("Digite um número:"))
valor2 = float(input("Digite outro número:"))
valor3 = float(input("Digite outro número:"))
valores = [valor1, valor2, valor3]
print("Valores digitados:")
for valor in valores:
print(valor)
media = sum(valores) / len(valores)
print("Média: " + str(media))
Repetindo comandos (2)
Arquivo: media5.py
quantidade = int(input("Quantos valores?"))
valores = []
for n in range(quantidade):
valor = float(input("Digite o valor " + str(n) + ": "))
valores.append(valor)
print("Valores digitados:")
for numero in valores:
print(numero)
print("Total de valores: " + str(len(valores)))
media = sum(valores) / len(valores)
print("Média: " + str(media))
Mudando a Entrada de Dados
Arquivo: ler_csv.py
Baixar CSV em: bit.ly/ex-py-abraji
import csv
municipios = csv.DictReader(open("municipios-brasil.csv"))
for municipio in municipios:
print(municipio["nome"] + "/" + municipio["estado"])
Parte 4:
Analisando Dados com Python
Exercício
Qual a densidade demográ ca dos municípios do RJ?
densidade = habitantes / area
Entrada: municipios-brasil.csv
Algoritmo
Abrir arquivo CSV com municípios
Para cada registro (município):
Se o estado for RJ:
Calcula densidade
Mostra densidade
Código
import csv
municipios = csv.DictReader(open('municipios-brasil.csv'))
for municipio in municipios:
if municipio['estado'] == 'RJ':
densidade = int(municipio['habitantes']) / float(municipio[
print(municipio['nome'] + '/RJ' + ': ' + str(densidade) + ' hab/k
Código (2)
Usando outra biblioteca
import rows
municipios = rows.import_from_csv('municipios-brasil.csv')
for municipio in municipios:
if municipio.estado == 'RJ':
densidade = municipio.habitantes / municipio.area
print(municipio.nome + '/RJ' + ': ' + str(densidade) +
Exemplo: Criando CSV
import csv
brasil = csv.DictReader(open('municipios-brasil.csv', encoding=
total = {}
for municipio in brasil:
estado = municipio['estado']
habitantes = int(municipio['habitantes'])
if estado not in total:
total[estado] = 0
total[estado] = total[estado] + habitantes
arquivo = open('habitantes.csv', mode='w', encoding='utf-8')
resultado = csv.DictWriter(arquivo, fieldnames=['estado', 'habitantes'
resultado.writeheader()
for sigla_estado, habitantes_estado in total.items():
resultado.writerow({'estado': sigla_estado,
'habitantes': habitantes_estado})
Exemplo
Quais notícias possuem o termo "bala perdida"?
Entrada: notificacoes.csv
Ver código
Parte 5:
Aprendendo mais
Exponha-se
Cursos online
Grupos
Eventos
Praticando
Praticando
Praticando
Praticando
Praticando
Só Python?
Bibliotecas e mais bibliotecas
SQL
... ?
Python Package Index (aka PyPI)
Feedback
O que foi legal?
O que pode melhorar?
bit.ly/avalia-abraji17
?
{ , , ,
, }/turicas
twitter github youtube
slideshare instagram
turicas@pythonic.cafe
Blog: turicas.info
+55 41 999 311 221
twitter.com/NataliaMazotte
github.com/ncortezrj
ncortezrj@gmail.com

Introdução a programação com Python (para jornalistas)