Allen B. Downey
Novatec
Authorized Portuguese translation of the English edition of Think Python, 2nd Edition ISBN 9781491939369 © 2016 Allen B. Downey. This translation is published and sold by permission of O'Reilly Media, Inc., which owns or controls all rights to publish and sell the same. Tradução em português autorizada da edição em inglês da obra Think Python, 2nd Edition ISBN 9781491939369 © 2016 Allen B. Downey. Esta tradução é publicada e vendida com a permissão da O'Reilly Media, Inc., detentora de todos os direitos para publicação e venda desta obra. © Novatec Editora Ltda. 2016. Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor e da Editora. Editor: Rubens Prates PY20160606 Tradução: Sheila Gomes Revisão gramatical: Smirna Cavalheiro Editoração eletrônica: Carolina Kuwabata Assistente editorial: Priscila A. Yoshimatsu ISBN: 978-85-7522-508-0 Histórico de impressões: Junho/2016
Primeira edição
Novatec Editora Ltda. Rua Luís Antônio dos Santos 110 02460-000 – São Paulo, SP – Brasil Tel.: +55 11 2959-6529 Email:
[email protected] Site: www.novatec.com.br Twitter: twitter.com/novateceditora Facebook: facebook.com/novatec LinkedIn: linkedin.com/in/novatec
Sumário
Prefácio ............................................................................................................ 13 Capítulo 1 A jornada do programa ................................................................... 25 ■
O que é um programa? ............................................................................................... 25 Execução do Python................................................................................................... 26 O primeiro programa ................................................................................................. 27 Operadores aritméticos............................................................................................... 28 Valores e tipos ............................................................................................................ 29 Linguagens formais e naturais .................................................................................... 30 Depuração ................................................................................................................. 32 Glossário ................................................................................................................... 33 Exercícios................................................................................................................... 35
Capítulo 2 Variáveis, expressões e instruções.................................................... 37 ■
Instruções de atribuição ............................................................................................. 37 Nomes de variáveis..................................................................................................... 38 Expressões e instruções............................................................................................... 39 Modo script ............................................................................................................... 39 Ordem das operações ..................................................................................................41 Operações com strings ................................................................................................41 Comentários .............................................................................................................. 42 Depuração ................................................................................................................. 43 Glossário ...................................................................................................................44 Exercícios...................................................................................................................46
Capítulo 3 Funções .......................................................................................... 47 ■
Chamada de função ................................................................................................... 47 Funções matemáticas.................................................................................................. 48 Composição............................................................................................................... 49 Como acrescentar novas funções ................................................................................. 50 Uso e definições ..........................................................................................................51 5
6
Pense em Python
Fluxo de execução ...................................................................................................... 52 Parâmetros e argumentos............................................................................................ 53 As variáveis e os parâmetros são locais ........................................................................ 54 Diagrama da pilha...................................................................................................... 55 Funções com resultado e funções nulas ....................................................................... 56 Por que funções? ........................................................................................................ 57 Depuração ................................................................................................................. 57 Glossário ................................................................................................................... 58 Exercícios...................................................................................................................60
Capítulo 4 Estudo de caso: projeto de interface ................................................ 63 ■
Módulo turtle ............................................................................................................ 63 Repetição simples ....................................................................................................... 65 Exercícios...................................................................................................................66 Encapsulamento ........................................................................................................ 67 Generalização ............................................................................................................ 67 Projeto da interface.....................................................................................................68 Refatoração ................................................................................................................ 70 Um plano de desenvolvimento .....................................................................................71 docstring ....................................................................................................................71 Depuração ................................................................................................................. 72 Glossário ................................................................................................................... 73 Exercícios....................................................................................................................74
Capítulo 5 Condicionais e recursividade ........................................................... 76 ■
Divisão pelo piso e módulo ........................................................................................ 76 Expressões booleanas .................................................................................................77 Operadores lógicos..................................................................................................... 78 Execução condicional ................................................................................................. 78 Execução alternativa ................................................................................................... 79 Condicionais encadeadas............................................................................................ 79 Condicionais aninhadas ............................................................................................. 80 Recursividade ..............................................................................................................81 Diagramas da pilha para funções recursivas................................................................. 83 Recursividade infinita ................................................................................................. 83 Entrada de teclado .....................................................................................................84 Depuração ................................................................................................................. 85 Glossário ................................................................................................................... 87 Exercícios...................................................................................................................88
Sumário
7
Capítulo 6 Funções com resultado.................................................................... 92 ■
Valores de retorno ...................................................................................................... 92 Desenvolvimento incremental ..................................................................................... 94 Composição...............................................................................................................96 Funções booleanas ..................................................................................................... 97 Mais recursividade ..................................................................................................... 98 Salto de fé .................................................................................................................100 Mais um exemplo...................................................................................................... 101 Verificação de tipos ................................................................................................... 101 Depuração ................................................................................................................103 Glossário ..................................................................................................................104 Exercícios..................................................................................................................105
Capítulo 7 Iteração ........................................................................................ 107 ■
Reatribuição .............................................................................................................107 Atualização de variáveis .............................................................................................108 Instrução while .........................................................................................................109 break ........................................................................................................................ 110 Raízes quadradas .......................................................................................................111 Algoritmos ................................................................................................................ 113 Depuração ................................................................................................................ 114 Glossário .................................................................................................................. 115 Exercícios.................................................................................................................. 115
Capítulo 8 Strings ......................................................................................... 118 ■
Uma string é uma sequência ...................................................................................... 118 len ........................................................................................................................... 119 Travessia com loop for ...............................................................................................120 Fatiamento de strings ................................................................................................ 121 Strings são imutáveis .................................................................................................122 Buscando ..................................................................................................................123 Loop e contagem .......................................................................................................123 Métodos de strings ....................................................................................................124 Operador in ..............................................................................................................125 Comparação de strings ..............................................................................................126 Depuração ................................................................................................................126 Glossário ..................................................................................................................128 Exercícios..................................................................................................................130
8
Pense em Python
Capítulo 9 Estudo de caso: jogos de palavras .................................................. 133 ■
Leitura de listas de palavras.......................................................................................133 Exercícios..................................................................................................................134 Busca ........................................................................................................................136 Loop com índices ......................................................................................................137 Depuração ................................................................................................................139 Glossário ..................................................................................................................140 Exercícios..................................................................................................................140
Capítulo 10 Listas .......................................................................................... 142 ■
Uma lista é uma sequência ........................................................................................142 Listas são mutáveis ...................................................................................................143 Atravessando uma lista ..............................................................................................144 Operações com listas .................................................................................................145 Fatias de listas ...........................................................................................................145 Métodos de listas ......................................................................................................146 Mapeamento, filtragem e redução ............................................................................... 147 Como excluir elementos ............................................................................................148 Listas e strings ..........................................................................................................149 Objetos e valores .......................................................................................................150 Alias ......................................................................................................................... 151 Argumentos de listas .................................................................................................152 Depuração ................................................................................................................154 Glossário ..................................................................................................................156 Exercícios..................................................................................................................157
Capítulo 11 Dicionários ................................................................................. 161 ■
Um dicionário é um mapeamento.............................................................................. 161 Um dicionário como uma coleção de contadores ........................................................163 Loop e dicionários ....................................................................................................165 Busca reversa.............................................................................................................165 Dicionários e listas ....................................................................................................167 Memos .....................................................................................................................169 Variáveis globais ........................................................................................................170 Depuração ................................................................................................................172 Glossário ..................................................................................................................173 Exercícios..................................................................................................................175
Capítulo 12 Tuplas ......................................................................................... 178 ■
Tuplas são imutáveis .................................................................................................178 Atribuição de tuplas ..................................................................................................180
Sumário
9
Tuplas como valores de retorno .................................................................................. 181 Tuplas com argumentos de comprimento variável ....................................................... 181 Listas e tuplas ...........................................................................................................182 Dicionários e tuplas ..................................................................................................184 Sequências de sequências ..........................................................................................186 Depuração ................................................................................................................187 Glossário ..................................................................................................................188 Exercícios..................................................................................................................189
Capítulo 13 Estudo de caso: seleção de estrutura de dados ............................. 192 ■
Análise de frequência de palavras...............................................................................192 Números aleatórios ...................................................................................................193 Histograma de palavras .............................................................................................195 Palavras mais comuns ...............................................................................................196 Parâmetros opcionais ................................................................................................197 Subtração de dicionário .............................................................................................198 Palavras aleatórias .....................................................................................................199 Análise de Markov ................................................................................................... 200 Estruturas de dados ................................................................................................. 202 Depuração ............................................................................................................... 203 Glossário ................................................................................................................. 205 Exercícios................................................................................................................. 206
Capítulo 14 Arquivos ..................................................................................... 207 ■
Persistência .............................................................................................................. 207 Leitura e escrita ....................................................................................................... 208 Operador de formatação ........................................................................................... 208 Nomes de arquivo e caminhos ...................................................................................210 Captura de exceções ...................................................................................................211 Bancos de dados........................................................................................................212 Usando o Pickle ........................................................................................................213 Pipes ......................................................................................................................... 214 Módulos de escrita ....................................................................................................216 Depuração ................................................................................................................ 217 Glossário .................................................................................................................. 218 Exercícios.................................................................................................................. 219
Capítulo 15 Classes e objetos ......................................................................... 221 ■
Tipos definidos pelos programadores .........................................................................221 Atributos ................................................................................................................. 222 Retângulos ................................................................................................................224
10
Pense em Python
Instâncias como valores de retorno .............................................................................225 Objetos são mutáveis ................................................................................................225 Cópia....................................................................................................................... 226 Depuração ............................................................................................................... 228 Glossário ................................................................................................................. 229 Exercícios................................................................................................................. 230
Capítulo 16 Classes e funções......................................................................... 231 ■
Time ......................................................................................................................... 231 Funções puras ...........................................................................................................232 Modificadores ...........................................................................................................233 Prototipação versus planejamento ..............................................................................234 Depuração ............................................................................................................... 236 Glossário ..................................................................................................................237 Exercícios................................................................................................................. 238
Capítulo 17 Classes e métodos ....................................................................... 240 ■
Recursos orientados a objeto .................................................................................... 240 Exibição de objetos ................................................................................................... 241 Outro exemplo ..........................................................................................................243 Um exemplo mais complicado .................................................................................. 244 Método init .............................................................................................................. 244 Método __str__ ........................................................................................................245 Sobrecarga de operadores ......................................................................................... 246 Despacho por tipo .....................................................................................................247 Polimorfismo ........................................................................................................... 248 Interface e implementação .........................................................................................249 Depuração ............................................................................................................... 250 Glossário .................................................................................................................. 251 Exercícios..................................................................................................................252
Capítulo 18 Herança ...................................................................................... 253 ■
Objetos Card ............................................................................................................253 Atributos de classe ....................................................................................................255 Comparação de cartas .............................................................................................. 256 Baralhos ...................................................................................................................257 Exibição do baralho ................................................................................................. 258 Adição, remoção, embaralhamento e classificação ...................................................... 258 Herança ....................................................................................................................259 Diagramas de classe ..................................................................................................261 Encapsulamento de dados ........................................................................................ 262
Sumário
11
Depuração ............................................................................................................... 264 Glossário ................................................................................................................. 265 Exercícios..................................................................................................................267
Capítulo 19 Extra .......................................................................................... 270 ■
Expressões condicionais ............................................................................................270 Abrangência de listas .................................................................................................271 Expressões geradoras .................................................................................................273 any e all ....................................................................................................................274 Conjuntos .................................................................................................................274 Contadores ...............................................................................................................276 defaultdict ............................................................................................................... 277 Tuplas nomeadas ..................................................................................................... 279 Reunindo argumentos de palavra-chave .................................................................... 280 Glossário ................................................................................................................. 282 Exercícios................................................................................................................. 282
Capítulo 20 Depuração .................................................................................. 284 ■
Erros de sintaxe ....................................................................................................... 284 Continuo fazendo alterações e não faz nenhuma diferença.................................... 286 Erros de tempo de execução...................................................................................... 286 Meu programa não faz nada ................................................................................ 286 Meu programa fica suspenso ............................................................................... 287 Quando executo o programa recebo uma exceção................................................. 288 Acrescentei tantas instruções print que fui inundado pelos resultados................... 290 Erros semânticos .......................................................................................................291 Meu programa não funciona ................................................................................291 Tenho uma baita expressão cabeluda e ela não faz o que espero ............................ 292 Tenho uma função que não retorna o que espero.................................................. 293 Estou perdido e preciso de ajuda ......................................................................... 293 Sério, preciso mesmo de ajuda ............................................................................. 293
Capítulo 21 Análise de algoritmos ................................................................. 295 ■
Ordem de crescimento.............................................................................................. 296 Análise de operações básicas do Python .................................................................... 299 Análise de algoritmos de busca ..................................................................................301 Hashtables ............................................................................................................... 302 Glossário ................................................................................................................. 306
Sobre o autor .................................................................................................. 308