/EricMatthes

Curso Intensivo de Python

Primary LanguagePythonMIT LicenseMIT

EricMatthes

Curso Intensivo de Python

""" Hello Mina~san me chamo Natã Vitor e sou carinhosamente apelidado na comunidade gamer como NVPanda. Hoje trago a vocês o Livro do Eric Matthes de título - Curso Intensivo de Python, creio que a maioria de vocês já conhece. Estarei iniciando esse curso de Python pra aprender como um iniciante junto a outros que sejam iniciantes. Mas se você já tem conhecimento avançado ou até anos e anos de programador, este também serve para dar um "Refresh" na sua memória a respeito de Python. """

Espero que haja a colaboração de todos, e todos os direitos são para os criadores e editores do livro com direitos reservados aos mesmos.

Caso, você queira, compartilhe e divulgue esse material entre amigos, parentes e até mesmo pessoas que estejam no seu convívio social,

Para que assim como você eles possam conhecer Python, entender e usar de forma simples, rápida e intuitiva em seu dia-a-dia.

Além dessa finalidade acima exposta, quero explicitar que este será feito conforme os direitos de licença MIT.

""" O conteúdo do livro é dividido nos tópicos abaixo:

              SUMÁRIO

Introdução

Introdução A quem este livro se destina? O que você pode esperar do livro? Por que Python?

Parte I ■ Conceitos básicos

1 ■ Iniciando Configurando seu ambiente de programação Python 2 e Python 3 Executando trechos de código Python Hello World! Python em sistemas operacionais diferentes Python no Linux Python no OS X Python no Windows Resolvendo problemas de instalação Executando programas Python a partir de um terminal No Linux e no OS X No Windows Resumo

2 ■ Variáveis e tipos de dados simples O que realmente acontece quando executamos hello_world.py Variáveis Nomeando e usando variáveis Evitando erros em nomes ao usar variáveis Strings Mudando para letras maiúsculas e minúsculas em uma string usando métodos Combinando ou concatenando strings Acrescentando espaços em branco em strings com tabulações ou quebras de linha Removendo espaços em branco Evitando erros de sintaxe com strings Exibindo informações em Python 2 Números Inteiros Números de ponto flutuante Evitando erros de tipo com a função str() Inteiros em Python 2 Comentários Como escrever comentários? Que tipos de comentário você deve escrever? Zen de Python Resumo

3 ■ Introdução às listas O que é uma lista? Acessando elementos de uma lista A posição dos índices começa em 0, e não em 1 Usando valores individuais de uma lista Alterando, acrescentando e removendo elementos Modificando elementos de uma lista Acrescentando elementos em uma lista Removendo elementos de uma lista Organizando uma lista Ordenando uma lista de forma permanente com o método sort() Ordenando uma lista temporariamente com a função sorted() Exibindo uma lista em ordem inversa Descobrindo o tamanho de uma lista Evitando erros de índice quando trabalhar com listas Resumo

4 ■ Trabalhando com listas Percorrendo uma lista inteira com um laço Observando os laços com mais detalhes Executando mais tarefas em um laço for Fazendo algo após um laço for Evitando erros de indentação Esquecendo-se de indentar Esquecendo-se de indentar linhas adicionais Indentando desnecessariamente Indentando desnecessariamente após o laço Esquecendo os dois-pontos Criando listas numéricas Usando a função range() Usando range() para criar uma lista de números Estatísticas simples com uma lista de números List comprehensions Trabalhando com parte de uma lista Fatiando uma lista Percorrendo uma fatia com um laço Copiando uma lista Tuplas Definindo uma tupla Percorrendo todos os valores de uma tupla com um laço Sobrescrevendo uma tupla Estilizando seu código Guia de estilo Indentação Tamanho da linha Linhas em branco Outras diretrizes de estilo Resumo

5 ■ Instruções if Um exemplo simples Testes condicionais Verificando a igualdade Ignorando as diferenças entre letras maiúsculas e minúsculas ao verificar a igualdade Verificando a diferença Comparações numéricas Testando várias condições Verificando se um valor está em uma lista Verificando se um valor não está em uma lista Expressões booleanas Instruções if Instruções if simples Instruções if-else Sintaxe if-elif-else Usando vários blocos elif Omitindo o bloco else Testando várias condições Usando instruções if com listas Verificando itens especiais Verificando se uma lista não está vazia Usando várias listas Estilizando suas instruções if Resumo

6 ■ Dicionários Um dicionário simples Trabalhando com dicionários Acessando valores em um dicionário Adicionando novos pares chave-valor Começando com um dicionário vazio Modificando valores em um dicionário Removendo pares chave-valor Um dicionário de objetos semelhantes Percorrendo um dicionário com um laço Percorrendo todos os pares chave-valor com um laço Percorrendo todas as chaves de um dicionário com um laço Percorrendo as chaves de um dicionário em ordem usando um laço Percorrendo todos os valores de um dicionário com um laço Informações aninhadas Uma lista de dicionários Uma lista em um dicionário Um dicionário em um dicionário Resumo

7 ■ Entrada de usuário e laços while Como a função input() trabalha Escrevendo prompts claros Usando int() para aceitar entradas numéricas Operador de módulo Aceitando entradas em Python 2.7 Introdução aos laços while Laço while em ação Deixando o usuário decidir quando quer sair Usando uma flag Usando break para sair de um laço Usando continue em um laço Evitando loops infinitos Usando um laço while com listas e dicionários Transferindo itens de uma lista para outra Removendo todas as instâncias de valores específicos de uma lista Preenchendo um dicionário com dados de entrada do usuário Resumo

8 ■ Funções Definindo uma função Passando informações para uma função Argumentos e parâmetros Passando argumentos Argumentos posicionais Argumentos nomeados Valores default Chamadas de função equivalentes Evitando erros em argumentos Valores de retorno Devolvendo um valor simples Deixando um argumento opcional Devolvendo um dicionário Usando uma função com um laço while Passando uma lista para uma função Modificando uma lista em uma função Evitando que uma função modifique uma lista Passando um número arbitrário de argumentos Misturando argumentos posicionais e arbitrários Usando argumentos nomeados arbitrários Armazenando suas funções em módulos Importando um módulo completo Importando funções específicas Usando a palavra reservada as para atribuir um alias a uma função Usando a palavra reservada as para atribuir um alias a um módulo Importando todas as funções de um módulo Estilizando funções Resumo

9 ■ Classes Criando e usando uma classe Criando a classe Dog Criando uma instância a partir de uma classe Trabalhando com classes e instâncias Classe Car Definindo um valor default para um atributo Modificando valores de atributos Herança Método init() de uma classe-filha Herança em Python 2.7 Definindo atributos e métodos da classe-filha Sobrescrevendo métodos da classe-pai Instâncias como atributos Modelando objetos do mundo real Importando classes Importando uma única classe Armazenando várias classes em um módulo Importando várias classes de um módulo Importando um módulo completo Importando todas as classes de um módulo Importando um módulo em um módulo Definindo o seu próprio fluxo de trabalho Biblioteca-padrão de Python Estilizando classes Resumo

10 ■ Arquivos e exceções Lendo dados de um arquivo Lendo um arquivo inteiro Paths de arquivo Lendo dados linha a linha Criando uma lista de linhas de um arquivo Trabalhando com o conteúdo de um arquivo Arquivos grandes: um milhão de dígitos Seu aniversário está contido em pi? Escrevendo dados em um arquivo Escrevendo dados em um arquivo vazio Escrevendo várias linhas Concatenando dados em um arquivo Exceções Tratando a exceção ZeroDivisionError Usando blocos try-except Usando exceções para evitar falhas Bloco else Tratando a exceção FileNotFoundError Analisando textos Trabalhando com vários arquivos Falhando silenciosamente Decidindo quais erros devem ser informados Armazenando dados Usando json.dump() e json.load() Salvando e lendo dados gerados pelo usuário Refatoração Resumo

11 ■ Testando o seu código Testando uma função Testes de unidade e casos de teste Um teste que passa Um teste que falha Respondendo a um teste que falhou Adicionando novos testes Testando uma classe Uma variedade de métodos de asserção Uma classe para testar Testando a classe AnonymousSurvey Método setUp() Resumo

Parte II ■ Projetos Projeto 1 ■ Invasão alienígena

12 ■ Uma espaçonave que atira Planejando o seu projeto Instalando o Pygame Instalando pacotes Python com o pip Instalando o Pygame no Linux Instalando o Pygame no OS X Instalando o Pygame no Windows Dando início ao projeto do jogo Criando uma janela do Pygame e respondendo às entradas do usuário Definindo a cor de fundo Criando uma classe de configurações Adicionando a imagem de uma espaçonave Criando a classe Ship Desenhando a espaçonave na tela Refatoração: o módulo game_functions Função check_events() Função update_screen() Pilotando a espaçonave Respondendo a um pressionamento de tecla Permitindo um movimento contínuo Movendo tanto para a esquerda quanto para a direita Ajustando a velocidade da espaçonave Limitando o alcance da espaçonave Refatorando check_events() Uma recapitulação rápida alien_invasion.py settings.py game_functions.py ship.py Atirando Adicionando as configurações dos projéteis Criando a classe Bullet Armazenando projéteis em um grupo Disparando os projéteis Apagando projéteis antigos Limitando o número de projéteis Criando a função update_bullets() Criando a função fire_bullet() Resumo

13 ■ Alienígenas! Revisando o seu projeto Criando o primeiro alienígena Criando a classe Alien Criando uma instância do alienígena Fazendo o alienígena aparecer na tela Construindo a frota de alienígenas Determinando quantos alienígenas cabem em uma linha Criando linhas de alienígenas Criando a frota Refatorando create_fleet() Adicionando linhas Fazendo a frota se mover Movendo os alienígenas para a direita Criando configurações para a direção da frota Verificando se um alienígena atingiu a borda Fazendo a frota descer e mudando a direção Atirando nos alienígenas Detectando colisões com os projéteis Criando projéteis maiores para testes Repovoando a frota Aumentando a velocidade dos projéteis Refatorando update_bullets() Encerrando o jogo Detectando colisões entre um alienígena e a espaçonave Respondendo a colisões entre alienígenas e a espaçonave Alienígenas que alcançam a parte inferior da tela Fim de jogo! Identificando quando determinadas partes do jogo devem executar Resumo

14 ■ Pontuação Adicionando o botão Play Criando uma classe Button Desenhando o botão na tela Iniciando o jogo Reiniciando o jogo Desativando o botão Play Ocultando o cursor do mouse Passando para o próximo nível Modificando as configurações de velocidade Reiniciando a velocidade Pontuação Exibindo a pontuação Criando um painel de pontuação Atualizando a pontuação à medida que os alienígenas são eliminados Garantindo que todos os acertos sejam contabilizados Aumentando a quantidade de pontos Arredondando a pontuação Pontuações máximas Exibindo o nível Exibindo o número de espaçonaves Resumo

Projeto 2 ■ Visualização de dados

15 ■ Gerando dados Instalando o matplotlib No Linux No OS X No Windows Testando o matplotlib A galeria do matplotlib Gerando um gráfico linear simples Alterando o tipo do rótulo e a espessura do gráfico Corrigindo o gráfico Plotando e estilizando pontos individuais com scatter() Plotando uma série de pontos com scatter() Calculando dados automaticamente Removendo os contornos dos pontos de dados Definindo cores personalizadas Usando um colormap Salvando seus gráficos automaticamente Passeios aleatórios Criando a classe RandomWalk() Escolhendo as direções Plotando o passeio aleatório Gerando vários passeios aleatórios Estilizando o passeio Colorindo os pontos Plotando os pontos de início e de fim Limpando os eixos Adicionando pontos para plotagem Alterando o tamanho para preencher a tela Lançando dados com o Pygal Instalando o Pygal Galeria do Pygal Criando a classe Die Lançando o dado Analisando os resultados Criando um histograma Lançando dois dados Lançando dados de tamanhos diferentes Resumo

16 ■ Fazendo download de dados Formato de arquivo CSV Fazendo parse dos cabeçalhos de arquivos CSV Exibindo os cabeçalhos e suas posições Extraindo e lendo dados Plotando dados em um gráfico de temperatura Módulo datetime Plotando datas Plotando um período de tempo maior Plotando uma segunda série de dados Sombreando uma área do gráfico Verificação de erros Mapeando conjuntos de dados globais: formato JSON Fazendo download dos dados da população mundial Extraindo dados relevantes Convertendo strings em valores numéricos Obtendo os códigos de duas letras dos países Construindo um mapa-múndi Plotando dados numéricos em um mapa-múndi Criando um mapa completo de populações Agrupando os países de acordo com a sua população Estilizando mapas-múndi com o Pygal Clareando a cor do tema Resumo

17 ■ Trabalhando com APIs Usando uma API web Git e GitHub Requisitando dados usando uma chamada de API Instalando o pacote requests Processando uma resposta de API Trabalhando com o dicionário de resposta Resumo dos principais repositórios Monitorando os limites da taxa de uso da API Visualizando os repositórios usando o Pygal Aperfeiçoando os gráficos do Pygal Acrescentando dicas de contexto personalizadas Plotando os dados Adicionando links que podem ser clicados em nosso gráfico A API de Hacker News Resumo

Projeto 3 ■ Aplicações web

18 ■ Introdução ao Django Criando um projeto Escrevendo uma especificação Criando um ambiente virtual Instalando o virtualenv Ativando o ambiente virtual Instalando o Django Criando um projeto em Django Criando o banco de dados Visualizando o projeto Iniciando uma aplicação Definindo modelos Ativando os modelos Site de administração de Django Definindo o modelo Entry Migrando o modelo Entry Registrando Entry junto ao site de administração Shell de Django Criando páginas: a página inicial de Learning Log Mapeando um URL Escrevendo uma view Escrevendo um template Construindo páginas adicionais Herança de templates Página de assuntos Páginas de assuntos individuais Resumo

19 ■ Contas de usuário Permitindo que os usuários forneçam dados Adicionando novos assuntos Adicionando novas entradas Editando as entradas Criando contas de usuário Aplicação users Página de login Fazendo logout Página de cadastro Permitindo que os usuários tenham seus próprios dados Restringindo o acesso com @login_required Associando dados a determinados usuários Restringindo o acesso aos assuntos para os usuários apropriados Protegendo os assuntos de um usuário Protegendo a página edit_entry Associando novos assuntos ao usuário atual Resumo

20 ■ Estilizando e implantando uma aplicação Estilizando o Learning Log Aplicação django-bootstrap3 Usando o Bootstrap para estilizar Learning Log Modificando base.html Estilizando a página inicial usando um jumbotron Estilizando a página de login Estilizando a página new_topic Estilizando a página de assuntos Estilizando as entradas na página de um assunto Implantação do projeto Learning Log Criando uma conta no Heroku Instalando o Heroku Toolbelt Instalando os pacotes necessários Criando uma lista de pacotes com um arquivo requirements.txt Especificando o runtime de Python Modificando settings.py para o Heroku Criando um Procfile para iniciar processos Modificando wsgi.py para o Heroku Criando um diretório para arquivos estáticos Usando o servidor gunicorn localmente Usando o Git para monitorar os arquivos do projeto Enviado o projeto ao Heroku Configurando o banco de dados no Heroku Aperfeiçoando a implantação no Heroku Garantindo a segurança do projeto ativo Fazendo commit e enviando alterações Criando páginas de erro personalizadas Desenvolvimento contínuo Configuração SECRET_KEY Apagando um projeto no Heroku Resumo Posfácio

A ■ Instalando Python Python no Linux Descobrindo a versão instalada Instalando Python 3 no Linux Python no OS X Descobrindo a versão instalada Usando o Homebrew para instalar Python 3 Python no Windows Instalando Python 3 no Windows Encontrando o interpretador Python Adicionando Python à sua variável de path Palavras reservadas e funções embutidas de Python Palavras reservadas de Python Funções embutidas de Python

B ■ Editores de texto Geany Instalando o Geany no Linux Instalando o Geany no Windows Executando programas Python no Geany Personalizando as configurações do Geany Sublime Text Instalando o Sublime Text no OS X Instalando o Sublime Text no Linux Instalando o Sublime Text no Windows Executando programas Python no Sublime Text Configurando o Sublime Text Personalizando as configurações do Sublime Text IDLE Instalando o IDLE no Linux Instalando o IDLE no OS X Instalando o IDLE no Windows Personalizando as configurações do IDLE Emacs e o vim

C ■ Obtendo ajuda Primeiros passos Tente novamente Faça uma pausa Consulte os recursos deste livro Pesquisando online Stack Overflow Documentação oficial de Python Documentação oficial da biblioteca r/learnpython Postagens de blog IRC (Internet Relay Chat) Crie uma conta no IRC Canais para se associar Cultura do IRC

D ■ Usando o Git para controle de versões Instalando o Git Instalando o Git no Linux Instalando o Git no OS X Instalando o Git no Windows Configurando o Git Criando um projeto Ignorando arquivos Inicializando um repositório Verificando o status Adicionando arquivos no repositório Fazendo um commit Verificando o log Segundo commit Revertendo uma alteração Check out de commits anteriores Apagando o repositório """

Aqui se encerra nosso estudo. Lembrando que pra cada tópico estarei disponibilizando o código fonte que eu produzi, mas você tem total liberdade

Para produzir da sua própria maneira. Não se prenda a minha forma de criar programas, faça do seu próprio jeito e estilo e aprenda de forma substancial

Isso garante que você aprenda e aprimore sua essência como programador.

""" Minha frase final é: 'Haverá um dia que todos os programadores do mundo e de suas linguagens de programação diferentes se unirão em 1 única linguagem fazendo com que todos percebam que mesmo tendo tudo de diferente ainda perseguimos o mesmo sonho, aperfeiçoar a nós mesmos!' """

Assim finalizo esse readme, o pdf ficará disponível aqui nesse Repositório e espero que fique até após eu morrer, ainda vai demorar, mas espero conseguir

Manter minha mente focada nesse estudo e assim produzir junto a comunidade material suficiente para que qualquer um possa alcançar seus sonhos e cuidar de

quem ama.

Livro do Eric Matthes

E-Book - Eric Matthes - Curso Intensivo de Python - Editora Novatec.pdf