O livro “Learning Python: programação de jogos, visualização de dados, aplicativos da web. 3rd ed.

imagem Oi, habrozhiteli! Lançamos a terceira versão do best-seller nº 1 na programação em Python da Amazon , o guia de linguagem Python mais popular do mundo.

Você não pode apenas aprender o mais rápido possível, mas também aprender a escrever programas, corrigir erros e criar aplicativos de trabalho. Na primeira parte do livro, você será apresentado aos conceitos básicos de programação, como variáveis, listas, classes e loops, e exercícios simples ensinarão como usar modelos de código limpo. Você aprenderá como tornar os programas interativos e como testar o código antes de adicionar a um projeto.

Na segunda parte, você colocará o novo conhecimento em prática e criará três projetos: um jogo de arcade no estilo Space Invaders, visualização de dados com convenientes bibliotecas Python e um aplicativo da Web simples que pode ser rapidamente implementado on-line. Ao trabalhar com um livro, você aprenderá: ∙ Use bibliotecas poderosas e ferramentas Python: Pygame, Matplotlib, Plotly e Django ∙ Crie jogos 2D de complexidade variada que podem ser controlados usando o teclado e o mouse ∙ Crie visualização interativa de dados ∙ Projete, personalize e implemente a Web aplicativos ∙ Lidar com bugs e erros

A nova edição foi cuidadosamente revisada e reflete os últimos avanços nas práticas de programação Python. A primeira parte do livro foi complementada com novas informações sobre linhas f, constantes e gerenciamento de dados. Na segunda parte, o código do projeto foi atualizado. A estrutura e o código do projeto tornaram-se mais limpos e compreensíveis, agora eles usam todo o poder de bibliotecas e ferramentas populares, como Plotly e Django.


A seguir, é apresentado um resumo das alterações na terceira edição:


No Capítulo 1, as instruções de instalação do Python foram simplificadas para usuários de todos os principais sistemas operacionais. Agora, recomendo usar o editor de texto Sublime Text, popular entre iniciantes e profissionais, e que funciona em todos os sistemas operacionais.

O Capítulo 2 fornece uma descrição mais detalhada de como as variáveis ​​são implementadas no Python. As variáveis ​​são descritas como rótulos de texto para valores, o que permite ao leitor entender melhor o comportamento das variáveis ​​no Python. O livro faz uso extensivo das linhas f introduzidas no Python 3.6, um mecanismo muito mais simples e conveniente para o uso de valores em strings. O Python 3.6 também introduziu a capacidade de usar sublinhados para representar grandes números (por exemplo, 1_000_000); ela também está incluída nesta edição. A atribuição múltipla de variáveis ​​foi apresentada em um dos projetos da primeira edição; a descrição foi compilada e movida para o capítulo 2 para conveniência dos leitores. Finalmente, um sistema de convenções compreensível para representar constantes no Python também está incluído neste capítulo.

O capítulo 6 apresenta o método get () para ler valores de um dicionário, que pode retornar o valor padrão se não houver uma chave.

O projeto Invasão Alienígena (capítulos 12–14) agora é totalmente baseado no uso de classes. O jogo em si é uma classe (em vez de uma série de funções, como na edição anterior). Isso simplifica bastante a estrutura geral do jogo, reduz o número de chamadas de função e os parâmetros necessários. Os leitores familiarizados com a primeira edição apreciarão a simplicidade da nova abordagem baseada em classe. O Pygame agora pode ser instalado com um comando de linha única em todos os sistemas, e o leitor pode escolher entre iniciar o jogo no modo de tela cheia ou janela.

Nos projetos de visualização de dados, as instruções de instalação do Matplotlib foram simplificadas para todos os sistemas operacionais. As visualizações baseadas em Matplotlib usam a função subplots (), que é mais conveniente para aprender a criar visualizações complexas. O projeto Rolling Dice do Capítulo 15 usa o Plotly, uma biblioteca de visualização com sintaxe simples, manutenção de alta qualidade e saída bonita com opções de customização avançadas.

No capítulo 16, o projeto meteorológico foi traduzido para dados da NOAA, que demonstraram maior estabilidade ao longo dos anos do que o site usado na primeira edição. O projeto de mapeamento agora é dedicado à atividade sísmica global; quando o projeto estiver concluído, uma visualização magnífica será construída, representando visualmente os limites das placas tectônicas ao longo das coordenadas de todos os terremotos por um determinado período de tempo. Você aprenderá como mapear quaisquer conjuntos de dados que contenham coordenadas geográficas.

O Capítulo 17 usa a biblioteca Plotly para visualizar a atividade relacionada ao Python em projetos de código aberto no GitHub.

O projeto Learning Log (capítulos 18–20) é desenvolvido sobre a versão mais recente do Django, e a versão mais recente do Bootstrap é usada para projetá-lo. O processo de implantação do projeto no Heroku foi simplificado usando o pacote django-heroku e usa variáveis ​​de ambiente em vez de editar arquivos settings.py. Essa solução é mais simples e mais adequada à maneira como programadores profissionais implantam projetos modernos do Django.

O Apêndice A foi completamente redesenhado. Incluiu recomendações para a instalação do Python. O Apêndice B inclui recomendações detalhadas para a configuração do Texto Sublime e fornece breves descrições dos principais editores de texto e ambientes integrados usados ​​atualmente. O Apêndice B fornece links para recursos online mais novos e populares para obter ajuda, e o Apêndice D oferece um breve tutorial sobre o uso do Git para controle de versão.

Entendemos que é surpreendente para muitos que tenhamos lançado a terceira edição do livro e o livro original 2ed. A razão para este incidente é simples. Seis meses após o lançamento da primeira edição em russo, o autor fez alterações significativas, porém pequenas, no livro, corrigindo muitos códigos. Depois de analisar o número de alterações, decidimos nomear o novo livro como "Segunda Edição". Portanto, a segunda publicação em russo foi lançada em 30 de maio de 2017.

E agora a 2ª edição internacional teve que ser lançada como
“Aprendendo Python: programação de jogos, visualização de dados, aplicativos da web. 3rd ed.

Trecho. Dicionários


Às vezes, é necessário salvar muitos dicionários em uma lista ou salvar uma lista como o valor de um elemento do dicionário. Criar estruturas complexas desse tipo é chamado de incorporação. Você pode incorporar vários dicionários em uma lista, uma lista de itens em um dicionário ou até mesmo um dicionário dentro de outro dicionário. Como demonstram os exemplos a seguir, o anexo é um mecanismo extremamente poderoso.

Lista de dicionários


O dicionário alien_0 contém várias informações sobre um alien, mas não há lugar para armazenar informações sobre o segundo alien, sem mencionar a tela inteira entupida por alienígenas. Como simular uma frota de invasão? Por exemplo, você pode criar uma lista de alienígenas na qual cada elemento é um dicionário com informações sobre um alienígena. Por exemplo, o código a seguir cria uma lista de três alienígenas:

aliens.py alien_0 = {'color': 'green', 'points': 5} alien_1 = {'color': 'yellow', 'points': 10} alien_2 = {'color': 'red', 'points': 15} ❶ aliens = [alien_0, alien_1, alien_2] for alien in aliens: print(alien) 

Primeiro, são criados três dicionários, cada um dos quais representa um alienígena separado. No ponto ❶, cada dicionário é listado com o nome alienígenas. Finalmente, o programa percorre a lista e exibe cada alien:

 {'color': 'green', 'points': 5} {'color': 'yellow', 'points': 10} {'color': 'red', 'points': 15} 

Obviamente, em um exemplo realista, mais de três alienígenas serão usados, que serão gerados automaticamente. No exemplo a seguir, a função range () cria uma frota de 30 alienígenas:

 #      . aliens = [] #  30  . ❶ for alien_number in range(30): ❷ new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'} ❸ aliens.append(new_alien) #   5 : ❹ for alien in aliens[:5]: print(alien) print("...") #    . ❺ print(f"Total number of aliens: {len(aliens)}") 

No início do exemplo, a lista para armazenar todos os alienígenas que serão criados está vazia. No ponto ❶, a função range () retorna um conjunto de números, que simplesmente informa ao Python quantas vezes o loop deve repetir. Cada vez que o ciclo é concluído, um novo alienígena é criado, que é adicionado à lista de alienígenas. No ponto ❹, o segmento é usado para gerar os cinco primeiros alienígenas e no ponto ❺ o comprimento da lista é exibido (para demonstrar que o programa realmente gerou toda a frota de 30 alienígenas):

 {'speed': 'slow', 'color': 'green', 'points': 5} {'speed': 'slow', 'color': 'green', 'points': 5} {'speed': 'slow', 'color': 'green', 'points': 5} {'speed': 'slow', 'color': 'green', 'points': 5} {'speed': 'slow', 'color': 'green', 'points': 5} ... Total number of aliens: 30 

Todos os alienígenas têm as mesmas características, mas o Python trata cada alienígena como um objeto separado, o que permite alterar os atributos de cada proprietário individualmente.

Como trabalhar com tantos? Imagine que neste jogo alguns alienígenas mudam de cor e começam a se mover mais rápido. Quando chega a hora de alterar as cores, podemos usar o loop for e if para alterar a cor. Por exemplo, para transformar os três primeiros alienígenas em amarelo, movendo-se em velocidade média e trazendo ao jogador 10 pontos cada, você pode fazer isso:

 #      . aliens = [] #  30  . for alien_number in range (0,30): new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'} aliens.append(new_alien) for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10 #   5 : for alien in aliens[0:5]: print(alien) print("...") 

Para alterar os três primeiros alienígenas, iteramos sobre os elementos de um segmento que inclui apenas os três primeiros alienígenas. No momento, todos os alienígenas são verdes ('verdes'), mas nem sempre é esse o caso, por isso escrevemos um comando if, que garante que apenas alienígenas verdes sejam alterados. Se o alienígena é verde, sua cor muda para amarelo ('amarelo'), velocidade para médio ('médio') e a recompensa aumenta para 10 pontos:

 {'speed': 'medium', 'color': 'yellow', 'points': 10} {'speed': 'medium', 'color': 'yellow', 'points': 10} {'speed': 'medium', 'color': 'yellow', 'points': 10} {'speed': 'slow', 'color': 'green', 'points': 5} {'speed': 'slow', 'color': 'green', 'points': 5} ... 

O ciclo pode ser expandido adicionando um bloco elif para transformar alienígenas amarelos em vermelhos - rápido e trazendo ao jogador 15 pontos cada. Não citaremos todo o código, e o loop será assim:

 for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10 elif alien['color'] == 'yellow': alien['color'] = 'red' alien['speed'] = 'fast' alien['points'] = 15 

Uma solução com o armazenamento de dicionários em uma lista é bastante comum quando cada dicionário contém atributos diferentes de um objeto. Por exemplo, você pode criar um dicionário para cada usuário do site, como foi feito no programa user.py na p. 114 e salve os dicionários individuais em uma lista chamada usuários. Todos os dicionários da lista devem ter a mesma estrutura para que você possa percorrer a lista e executar as mesmas operações com cada objeto do dicionário.

Lista de dicionários


Em vez de colocar um dicionário em uma lista, às vezes é conveniente colocar uma lista em um dicionário. Imagine como você descreveria a pizza encomendada no programa. Se nos restringirmos apenas à lista, somente a lista de coberturas para pizza poderá ser salva. Ao usar um dicionário, a lista de cobertura pode ser apenas um aspecto da descrição da pizza.

No exemplo a seguir, dois tipos de informações são armazenados para cada pizza: base e lista de cobertura. A lista de cobertura é o valor associado à chave 'coberturas'. Para usar elementos na lista, você deve especificar o nome do dicionário e a chave 'coberturas', como para qualquer outro valor no dicionário. Em vez de um único valor, uma lista de coberturas será obtida:

 pizza.py #     . ❶ pizza = { 'crust': 'thick', 'toppings': ['mushrooms', 'extra cheese'], } #  . ❷ print(f"You ordered a {pizza['crust']}-crust pizza " "with the following toppings:") ❸ for topping in pizza['toppings']: print("\t" + topping) 

O trabalho começa no ponto ❶ com um dicionário com informações sobre a pizza encomendada. O valor da string 'thick' está associado a uma chave no dicionário 'crust'. Outra chave 'coberturas' tem um valor de lista que armazena todas as coberturas solicitadas. No ponto ❷, uma descrição do pedido é exibida antes de criar a pizza. Se você precisar dividir uma linha longa em uma chamada de impressão (), selecione um ponto para dividir a linha de saída e finalize a linha com uma cotação. Recue a próxima linha, adicione aspas de abertura e continue com a linha. O Python concatena automaticamente todas as strings encontradas entre parênteses. Para concluir as adições, um loop for written é gravado. Para listar as coberturas, usamos a tecla 'toppings', e o Python pega a lista de coberturas do dicionário.

A seguinte mensagem descreve a pizza que estamos prestes a criar:

 You ordered a thick-crust pizza with the following toppings: mushrooms extra cheese 

O aninhamento de uma lista em um dicionário pode ser usado sempre que mais de um valor deve ser associado a uma chave do dicionário. Se as respostas forem salvas na lista no exemplo anterior com linguagens de programação, um participante da pesquisa poderá selecionar vários idiomas favoritos ao mesmo tempo. Ao enumerar um dicionário, o valor associado a cada pessoa seria uma lista de idiomas (em vez de um idioma). No loop for do dicionário, outro loop é criado para iterar sobre a lista de idiomas associados a cada participante:

 favorite_languages.py ❶ favorite_languages = { 'jen': ['python', 'ruby'], 'sarah': ['c'], 'edward': ['ruby', 'go'], 'phil': ['python', 'haskell'], } ❷ for name, languages in favorite_languages.items(): print(f"\n{name.title()}'s favorite languages are:") ❸ for language in languages: print(f"\t{language.title()}") 

Você vê no ponto ❶ que o valor associado a cada nome agora é uma lista. Alguns participantes têm uma linguagem de programação favorita, enquanto outros têm várias. Ao iterar sobre um dicionário no ponto ❷, uma variável denominada languages ​​é usada para armazenar cada valor do dicionário, porque sabemos que cada valor será uma lista. No ciclo principal, de acordo com os elementos do dicionário, outro ciclo itera sobre os elementos da lista de idiomas favoritos de cada participante. Agora, cada participante da pesquisa pode especificar quantas linguagens de programação favoritas desejar:

 Jen's favorite languages are: Python Ruby Sarah's favorite languages are: C Phil's favorite languages are: Python Haskell Edward's favorite languages are: Ruby Go 

Para melhorar ainda mais o programa, inclua um comando if no início do ciclo do dicionário para verificar se o participante selecionou mais de um idioma de programação (a verificação é baseada no valor de len (languages)). Se o participante tiver apenas um idioma favorito, o texto da mensagem será alterado para o singular (por exemplo, “O idioma favorito de Sarah é C”).

»Mais informações sobre o livro podem ser encontradas no site do editor
» Conteúdo
» Trecho

Cupom de 25% de desconto para vendedores ambulantes - Python

Após o pagamento da versão impressa do livro, um livro eletrônico é enviado por e-mail.

Source: https://habr.com/ru/post/pt485874/


All Articles