python for zombies (very basic level)
DESCRIPTION
Introdução à programação com Python, exemplos legais no final! Resumo no vídeo: http://www.youtube.com/watch?v=Zp7Y8goUI70TRANSCRIPT
![Page 1: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/1.jpg)
Python 3 for Zombies (very basic level) Fernando Masanori – FATEC – Centro Paula Souza
@fmasanori
Brain Hack Yeah!
Acreditem, ex-aluno meu
![Page 2: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/2.jpg)
Se quiser estudar sozinho, use o livro abaixo
![Page 3: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/3.jpg)
Ou este para aprender
![Page 4: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/4.jpg)
Mas, se precisa de mais ajuda para aprender a programar, continue aqui...
![Page 5: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/5.jpg)
Errando se aprende
![Page 6: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/6.jpg)
Errando se aprende
No Python os espaços iniciais são importantes
![Page 7: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/7.jpg)
Errando se aprende
![Page 8: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/8.jpg)
String diferente de inteiro
![Page 9: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/9.jpg)
Observe que não aconteceu nada ao digitar enter no final da linha É necessário “rodar” o programa no modo edição (Run Module F5)
Edition mode
![Page 10: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/10.jpg)
Rodar o programa
![Page 11: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/11.jpg)
Sempre use a extensão “.py” para não perder as cores do seu programa
Salvar o programa
![Page 12: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/12.jpg)
Mesmo resultado
![Page 13: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/13.jpg)
if/else/input/print
![Page 14: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/14.jpg)
if/else/input/print
![Page 15: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/15.jpg)
Funções
if/else/input/print
![Page 16: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/16.jpg)
Strings
if/else/input/print
![Page 17: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/17.jpg)
Variáveis
if/else/input/print
![Page 18: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/18.jpg)
Dir
etiv
as
if/else/input/print
![Page 19: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/19.jpg)
Identação
if/else/input/print
![Page 20: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/20.jpg)
= atribuição
if/else/input/print
![Page 21: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/21.jpg)
== comparação
if/else/input/print
![Page 22: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/22.jpg)
• Funções embutidas (built in functions) são chamadas pelo seu nome e exigem parênteses
• Strings se diferenciam dos comandos do programa por estarem dentro de aspas
• Variáveis controlam dados na memória e possuem tipos
• Diretivas são comandos da linguagem
As partes do seu programa
![Page 23: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/23.jpg)
• A identação separa blocos de comandos
• Um igual (=) significa atribuição
– Ex.: chute = int(g) (chute recebe inteiro de g)
• Dois iguais (==) significa comparação
– Ex.: chute == 42 (chute é igual a 42?)
• Dois pontos abrem blocos de instruções
– “Eu amo dois pontos!”
As partes do seu programa
![Page 24: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/24.jpg)
• Há duas coisas para executar o programa de adivinhação: um editor e um interpretador
• O editor salva o código escrito em um arquivo no disco
Código fonte
O editor salva o código fonte em
um arquivo
Como executo o programa?
![Page 25: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/25.jpg)
• Computadores não podem processar textos pois somente entendem binário (zeros e uns)
• O interpretador transforma o código fonte em um arquivo binário para o computador
Interpretador Python
O interpretador traduz o texto para
binário, que o computador entende
Hmm.. parece um jogo de
adivinhação...
Como executo o programa?
![Page 26: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/26.jpg)
• O interpretador Python atua em dois modos: interativo e edição
• O modo interativo é ótimo para testar comandos e obter respostas instantâneas
• Porém o modo edição é o mais utilizado para desenvolver os programas – Nomes dos arquivos geralmente terminam com
“.py”
– Caso utilize outra extensão perderá as cores...
Como executo o programa?
![Page 27: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/27.jpg)
print (“Bem vindo ao meu programa!”)
print (“Volte sempre!”)
Programas simples
![Page 28: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/28.jpg)
Programas normais
![Page 29: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/29.jpg)
Escolhendo o caminho
![Page 30: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/30.jpg)
chute == 42
O caminho True
O caminho False
condição
O computador segue por este caminho se a condição é verdadeira (chute == 42)
O computador segue por este caminho se a condição
é falsa (chute != 42)
Escolhendo o caminho
![Page 31: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/31.jpg)
• O programa somente diz se acertou ou não
• Para ajudar você dirá “Alto” ou “Baixo” caso a pessoa erre
• Como ficaria a estrada?
Dando dicas
![Page 32: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/32.jpg)
chute == 42
chute > 42
print (‘Você venceu!”)
print (‘Alto”)
print (‘Baixo”)
print (‘Fim do Jogo!”)
Dando dicas
![Page 33: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/33.jpg)
Utilize BACKSPACE e TAB para ir e
voltar
Dando dicas
![Page 34: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/34.jpg)
Só um chute por vez?
Programa considerado fraco
![Page 35: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/35.jpg)
Seria tão legal repetir várias vezes as mesmas linhas de
código, mas isso é um sonho...
Repetir comandos
![Page 36: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/36.jpg)
Repetir comandos
![Page 37: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/37.jpg)
Repetir comandos
![Page 38: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/38.jpg)
chute = 0
chute != 42
g = input(...) chute = int(g)
Quando o programa chega no while pela primeira vez
ele verifica a condição
No final do bloco do loop o programa volta para a
condição de novo
Se a condição é verdadeira ele sobe no looping
Repetir comandos
![Page 39: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/39.jpg)
Sempre é 42?
42 de novo?
Sim, resposta 42 sempre, hehe
![Page 40: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/40.jpg)
Sorteando
![Page 41: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/41.jpg)
Show de bola! Não importa o quanto eu
jogue, sempre terei um número novo!
Agora sim!
![Page 42: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/42.jpg)
Aqui vem o trem de dados
Cada vagão tem sua
informação
Listas == trem de dados
Mineirinho e seu trem de dados
![Page 43: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/43.jpg)
Todos a bordo do expresso
my_array!
O trem de dados my_array é uma única variável
Listas == trem de dados
![Page 44: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/44.jpg)
Dê um nome ao trem de dados
Atribua uma lista de dados
Como posso acrescentar um vagão com “Bettys”?
Engatar mais dados
![Page 45: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/45.jpg)
Aumentei um vagão na
lista
append
![Page 46: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/46.jpg)
• Uma lista vazia
• Uma lista com três notas
• Acessando uma nota
• Mudando a primeira nota
Listas
![Page 47: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/47.jpg)
Strings ou textos
![Page 48: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/48.jpg)
• Posso usar aspas simples, dupla ou tripla
Aspas simples, duplas, triplas
![Page 49: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/49.jpg)
Fatia do primeiro número até antes do segundo Não inclui o segundo número! Sim, esse é o meu time...
0 1 2 3 4 5 6 7 8
Fatiamento (Jack Stripador)
![Page 50: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/50.jpg)
• Posso usar um incremento ao fatiar a string
Incremento no fatiamento
![Page 51: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/51.jpg)
• Verifique se uma palavra é palíndrome
Incremento no fatiamento
![Page 52: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/52.jpg)
Alterar strings?
![Page 53: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/53.jpg)
• Usando concatenação contornamos esse problema
Concatenar pode ajudar
![Page 54: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/54.jpg)
for == while enrustido
Códigos equivalentes: for durante o dia vira while à noite
![Page 55: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/55.jpg)
for == while enrustido
Códigos equivalentes
![Page 56: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/56.jpg)
for == while enrustido
Códigos equivalentes
![Page 57: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/57.jpg)
• Aprendemos algumas funções do Python: len, int, float, print e input
• Agora iremos criar as nossas próprias funções
• Utilizo def para definir a função e return para devolver algum valor
• Existem funções que não retornam nada
def functions
![Page 58: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/58.jpg)
• Esta função retorna se o parâmetro x é par
• Observe que diferentemente do que já vimos até agora, essas linhas não serão executadas imediatamente
• Preciso chamar a função para executá-la
def functions
![Page 59: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/59.jpg)
• Até agora nossos dados desapareciam ao sair do IDLE
• Arquivos servem para armazenamento permanente
• Um arquivo é uma área em disco onde podemos ler ou gravar informações
• Acessamos o arquivo pelo seu nome
• Para acessar um arquivo é preciso abri-lo
Arquivos
![Page 60: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/60.jpg)
• Ao abrir o arquivo informamos seu nome, diretório onde fica (se necessário) e que operações iremos executar: leitura e/ou escrita
• A função que abre os arquivo é open e os modos são: r – leitura, w – escrita, a – append, b – binário, + (atualização)
• Os métodos para ler ou escrever são read e write
• Os arquivos devem ser fechados com close
Arquivos
![Page 61: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/61.jpg)
• Caso você execute este programa nada aparecerá na tela
• Procure no diretório c:\Python3x o arquivo números.txt
• O modo w cria o arquivo se ele não existir, caso exista ele será apagado e reescrito
Arquivos
![Page 62: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/62.jpg)
• readlines gera uma lista onde cada elemento é uma linha lida
• Arquivos textos são simples e possuem um caracter de controle no final para pular linha
• Se quisermos tirar esse caracter do final podemos usar print(linha.rstrip())
Arquivos
![Page 63: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/63.jpg)
Pythonic way
• O código acima faz o mesmo da forma pythônica
• No slide anterior vimos como programadores normais fazem a leitura
• Python é legal, pois sempre você pode se aprofundar mais
• Python é simples, mas difícil de esgotar
![Page 64: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/64.jpg)
• O dicionário em si consiste em relacionar uma chave a um valor específico
• Diferentemente das listas, onde o índice é um número, dicionários utilizam suas chaves como índice
• Para adicionar novos elementos não preciso de append, basta fazer a atribuição – Se a chave já existe: o valor associado é alterado
– Se a chave não existe: a nova chave é adicionada
Dictionaries
![Page 65: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/65.jpg)
Dictionaries
![Page 66: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/66.jpg)
Dictionaries
![Page 67: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/67.jpg)
• Faça um programa que leia o arquivo alice.txt e conte o número de ocorrências de cada palavra no texto. Obs.: para saber os caracteres especiais use import string e utilize string.punctuation
• http://www.gutenberg.org/cache/epub/11/pg11.txt
Dictionaries
![Page 70: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/70.jpg)
Interface GUI
https://gist.github.com/4961824
By Luciano Ramalho
![Page 75: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/75.jpg)
Fibonacci Recursivo
https://gist.github.com/4762654
![Page 76: Python for zombies (very basic level)](https://reader034.vdocuments.us/reader034/viewer/2022050921/5563a468d8b42a2d538b54d8/html5/thumbnails/76.jpg)
Bootle
https://gist.github.com/4762814
https://raw.github.com/defnull/bottle/master/bottle.py
Copiar o arquivo abaixo em \python3x\Lib