Le livre «Learning Python: programmation de jeux, visualisation de données, applications web. 3e éd.

image Salut, habrozhiteli! Nous avons publié la troisième version du best-seller n ° 1 en programmation Python Amazon , le guide du langage Python le plus populaire au monde.

Vous pouvez non seulement l'apprendre le plus rapidement possible, mais aussi apprendre à écrire des programmes, corriger des erreurs et créer des applications fonctionnelles. Dans la première partie du livre, vous découvrirez les concepts de programmation de base tels que les variables, les listes, les classes et les boucles, et des exercices simples vous apprendront à utiliser des modèles de code propres. Vous apprendrez à rendre les programmes interactifs et à tester le code avant de l'ajouter à un projet.

Dans la deuxième partie, vous mettrez en pratique les nouvelles connaissances et créerez trois projets: un jeu d'arcade dans le style de Space Invaders, la visualisation de données avec des bibliothèques Python pratiques et une application Web simple qui peut être rapidement déployée en ligne. Lorsque vous travaillez avec un livre, vous apprendrez: ∙ Utilisez des bibliothèques puissantes et des outils Python: Pygame, Matplotlib, Plotly et Django ∙ Créez des jeux 2D de complexité variable qui peuvent être contrôlés à l'aide du clavier et de la souris ∙ Créez une visualisation de données interactive ∙ Concevez, personnalisez et déployez le Web applications ∙ Gérer les bugs et les erreurs

La nouvelle édition a été soigneusement révisée et reflète les dernières avancées des pratiques de programmation Python. La première partie du livre a été complétée par de nouvelles informations sur les lignes f, les constantes et la gestion des données. Dans la deuxième partie, le code du projet a été mis à jour. La structure et le code du projet sont devenus plus propres et plus compréhensibles, maintenant ils utilisent toute la puissance des bibliothèques et des outils populaires, tels que Plotly et Django.


Voici un résumé des modifications apportées à la troisième édition:


Au chapitre 1, les instructions d'installation de Python ont été simplifiées pour les utilisateurs de tous les principaux systèmes d'exploitation. Maintenant, je recommande d'utiliser l'éditeur de texte Sublime Text, qui est populaire parmi les débutants et les professionnels, et fonctionne sur tous les systèmes d'exploitation.

Le chapitre 2 fournit une description plus détaillée de la façon dont les variables sont implémentées en Python. Les variables sont décrites comme des étiquettes de texte pour les valeurs, ce qui permet au lecteur de mieux comprendre le comportement des variables en Python. Le livre utilise largement les lignes f introduites dans Python 3.6, un mécanisme beaucoup plus simple et plus pratique pour utiliser des valeurs dans des chaînes. Python 3.6 a également introduit la possibilité d'utiliser des traits de soulignement pour représenter de grands nombres (par exemple, 1_000_000); elle est également incluse dans cette édition. L'affectation multiple de variables a été présentée dans l'un des projets de la première édition; la description a été compilée et déplacée au chapitre 2 pour la commodité des lecteurs. Enfin, un système de convention compréhensible pour représenter les constantes en Python est également inclus dans ce chapitre.

Le chapitre 6 présente la méthode get () pour lire les valeurs d'un dictionnaire, qui peut renvoyer la valeur par défaut s'il n'y a pas de clé.

Le projet Alien Invasion (chapitres 12-14) est désormais entièrement basé sur l'utilisation des classes. Le jeu lui-même est une classe (au lieu d'une série de fonctions, comme dans l'édition précédente). Cela simplifie considérablement la structure globale du jeu, réduit le nombre d'appels de fonction et les paramètres nécessaires. Les lecteurs familiers de la première édition apprécieront la simplicité de la nouvelle approche par classe. Pygame peut désormais être installé avec une commande sur une seule ligne dans tous les systèmes, et le lecteur peut choisir entre démarrer le jeu en mode plein écran ou en mode fenêtre.

Dans les projets de visualisation de données, les instructions d'installation de Matplotlib ont été simplifiées pour tous les systèmes d'exploitation. Les visualisations basées sur Matplotlib utilisent la fonction subplots (), qui est plus pratique pour apprendre à créer des visualisations complexes. Le projet Rolling Dice du chapitre 15 utilise Plotly, une bibliothèque de visualisation avec une syntaxe simple, une maintenance de haute qualité et une belle sortie avec de nombreuses options de personnalisation.

Au chapitre 16, le projet météorologique a été traduit en données NOAA, qui ont démontré une plus grande stabilité au fil des ans que le site utilisé dans la première édition. Le projet de cartographie est désormais dédié à l'activité sismique mondiale; d'ici la fin du projet, une magnifique visualisation sera construite, illustrant visuellement les limites des plaques tectoniques le long des coordonnées de tous les tremblements de terre pour une période de temps donnée. Vous apprendrez à cartographier tout ensemble de données contenant des coordonnées géographiques.

Le chapitre 17 utilise la bibliothèque Plotly pour visualiser l'activité liée à Python dans les projets open source sur GitHub.

Le projet Learning Log (chapitres 18 à 20) est construit sur la dernière version de Django et la dernière version de Bootstrap est utilisée pour le concevoir. Le processus de déploiement de projet dans Heroku a été simplifié en utilisant le package django-heroku, et il utilise des variables d'environnement au lieu de modifier les fichiers settings.py. Cette solution est plus simple et mieux adaptée à la façon dont les programmeurs professionnels déploient des projets Django modernes.

L'annexe A a été entièrement repensée. Il comprenait des recommandations pour l'installation de Python. L'annexe B contient des recommandations détaillées pour la configuration de Sublime Text et fournit une brève description des principaux éditeurs de texte et des environnements intégrés utilisés aujourd'hui. L'annexe B fournit des liens vers des ressources en ligne plus récentes et plus populaires pour obtenir de l'aide, et l'annexe D propose un court didacticiel sur l'utilisation de Git pour le contrôle de version.

Nous comprenons qu'il est surprenant pour beaucoup que nous ayons publié la troisième édition du livre et le livre original 2ed. La raison de cet incident est simple. Six mois après la sortie de la première édition en russe, l'auteur a apporté des modifications importantes mais mineures au livre, corrigé de nombreux codes. Après avoir examiné le nombre de changements, nous avons décidé de nommer le nouveau livre «Deuxième édition». La deuxième publication en langue russe a donc été publiée le 30 mai 2017.

Et maintenant, la 2e édition internationale devait être publiée
«Apprentissage de Python: programmation de jeux, visualisation de données, applications web. 3e éd.

Extrait. Dictionnaires


Parfois, il est nécessaire d'enregistrer de nombreux dictionnaires dans une liste ou d'enregistrer une liste en tant que valeur d'un élément de dictionnaire. La création de structures complexes de ce type est appelée intégration. Vous pouvez intégrer plusieurs dictionnaires dans une liste, une liste d'éléments dans un dictionnaire ou même un dictionnaire dans un autre dictionnaire. Comme le montrent les exemples suivants, l'attachement est un mécanisme extrêmement puissant.

Liste des dictionnaires


Le dictionnaire alien_0 contient une variété d'informations sur un étranger, mais il n'y a aucun endroit pour stocker des informations sur le deuxième étranger, sans parler de l'écran entier obstrué par des étrangers. Comment simuler une flotte d'invasion? Par exemple, vous pouvez créer une liste d'étrangers dans laquelle chaque élément est un dictionnaire avec des informations sur un étranger. Par exemple, le code suivant crée une liste de trois extraterrestres:

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) 

Tout d'abord, trois dictionnaires sont créés, chacun représentant un étranger séparé. Au point ❶, chaque dictionnaire est répertorié avec le nom extraterrestres. Enfin, le programme parcourt la liste et affiche chaque étranger:

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

Bien sûr, dans un exemple réaliste, plus de trois extraterrestres seront utilisés, qui seront générés automatiquement. Dans l'exemple suivant, la fonction range () crée une flotte de 30 extraterrestres:

 #      . 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)}") 

Au début de l'exemple, la liste de stockage de tous les extraterrestres qui seront créés est vide. Au point ❶, la fonction range () renvoie un ensemble de nombres, qui indique simplement à Python combien de fois la boucle doit se répéter. Chaque fois que le cycle est terminé, un nouvel extraterrestre ❷ est créé, qui est ensuite ajouté à la liste des extraterrestres ❸. Au point ❹, le segment est utilisé pour produire les cinq premiers extraterrestres, et au point ❺ la longueur de la liste est affichée (pour démontrer que le programme a vraiment généré la flotte entière de 30 extraterrestres):

 {'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 

Tous les extraterrestres ont les mêmes caractéristiques, mais Python traite chaque extraterrestre comme un objet distinct, ce qui vous permet de modifier les attributs de chaque propriétaire individuellement.

Comment travailler avec tant de personnes? Imaginez que dans ce jeu, certains extraterrestres changent de couleur et commencent à se déplacer plus rapidement. Quand vient le temps de changer les couleurs, nous pouvons utiliser la boucle for et la commande if pour changer la couleur. Par exemple, pour transformer les trois premiers extraterrestres en jaune, se déplaçant à vitesse moyenne et apportant au joueur 10 points chacun, vous pouvez le faire:

 #      . 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("...") 

Pour modifier les trois premiers extraterrestres, nous itérons sur les éléments d'un segment qui comprend uniquement les trois premiers extraterrestres. Pour le moment, tous les extraterrestres sont verts («verts»), mais ce ne sera pas toujours le cas, nous écrivons donc une commande if, qui garantit que seuls les extraterrestres verts changeront. Si l'étranger est vert, sa couleur passe au jaune («jaune»), la vitesse à moyenne («moyenne») et la récompense augmente à 10 points:

 {'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} ... 

Le cycle peut être étendu en ajoutant un bloc elif pour transformer les étrangers jaunes en rouges - rapidement et en apportant au joueur 15 points chacun. Nous ne citerons pas tout le code, et la boucle ressemble à ceci:

 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 

Une solution avec le stockage de dictionnaires dans une liste est assez courante lorsque chaque dictionnaire contient des attributs différents d'un objet. Par exemple, vous pouvez créer un dictionnaire pour chaque utilisateur du site, comme cela a été fait dans le programme user.py à la p. 114, et enregistrez les dictionnaires individuels dans une liste nommée utilisateurs. Tous les dictionnaires de la liste doivent avoir la même structure afin que vous puissiez parcourir la liste et effectuer les mêmes opérations avec chaque objet dictionnaire.

Liste des dictionnaires


Au lieu de mettre un dictionnaire dans une liste, il est parfois pratique de mettre une liste dans un dictionnaire. Imaginez comment vous décririez la pizza commandée dans le programme. Si nous nous limitons uniquement à la liste, seule la liste des garnitures pour pizza peut être enregistrée. Lorsque vous utilisez un dictionnaire, la liste de garniture ne peut être qu'un aspect de la description de la pizza.

Dans l'exemple suivant, deux types d'informations sont stockés pour chaque pizza: la base et la liste de garniture. La liste de tête est la valeur associée à la clé 'toppings'. Pour utiliser des éléments de la liste, vous devez spécifier le nom du dictionnaire et la clé 'toppings', comme pour toute autre valeur du dictionnaire. Au lieu d'une seule valeur, une liste de garnitures sera obtenue:

 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) 

Le travail commence au point ❶ avec un dictionnaire contenant des informations sur la pizza commandée. La valeur de chaîne «thick» est associée à une clé dans le dictionnaire «crust». Une autre clé «toppings» a une valeur de liste qui stocke tous les toppings commandés. Au point ❷, une description de la commande s'affiche avant de créer la pizza. Si vous devez diviser une longue ligne dans un appel print (), sélectionnez un point pour diviser la ligne de sortie et terminez la ligne par un devis. Mettez en retrait la ligne suivante, ajoutez un guillemet d'ouverture et continuez avec la ligne. Python concatène automatiquement toutes les chaînes trouvées entre parenthèses. Pour la conclusion des ajouts, une boucle for ❸ est écrite. Pour lister les toppings, nous utilisons la clé 'toppings', et Python prend la liste des toppings du dictionnaire.

Le message suivant décrit la pizza que nous allons créer:

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

L'imbrication d'une liste dans un dictionnaire peut être utilisée chaque fois que plusieurs valeurs doivent être associées à une clé de dictionnaire. Si les réponses étaient enregistrées dans la liste de l'exemple précédent avec les langages de programmation, un participant à l'enquête pourrait sélectionner plusieurs langues préférées à la fois. Lors de l'énumération d'un dictionnaire, la valeur associée à chaque personne serait une liste de langues (au lieu d'une langue). Dans la boucle for du dictionnaire, une autre boucle est créée pour parcourir la liste des langues associées à chaque participant:

 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()}") 

Vous voyez au point ❶ que la valeur associée à chaque nom est maintenant une liste. Certains participants ont un langage de programmation préféré, tandis que d'autres en ont plusieurs. Lors de l'itération sur un dictionnaire au point ❷, une variable nommée langues est utilisée pour stocker chaque valeur du dictionnaire, car nous savons que chaque valeur sera une liste. Dans le cycle principal, selon les éléments du dictionnaire, un autre cycle ❸ parcourt les éléments de la liste des langues préférées de chaque participant. Désormais, chaque participant à l'enquête peut spécifier autant de langages de programmation préférés qu'il le souhaite:

 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 

Afin d'améliorer encore le programme, incluez une commande if au début du cycle de dictionnaire pour vérifier si le participant a sélectionné plus d'un langage de programmation (le contrôle est basé sur la valeur de len (langues)). Si le participant n'a qu'une seule langue préférée, le texte du message est modifié pour le singulier (par exemple, «la langue préférée de Sarah est C»).

»Plus d'informations sur le livre sont disponibles sur le site Web de l'éditeur
» Contenu
» Extrait

25% de réduction sur les colporteurs - Python

Lors du paiement de la version papier du livre, un livre électronique est envoyé par e-mail.

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


All Articles