El libro "Learning Python: programación de juegos, visualización de datos, aplicaciones web. 3ra ed.

imagen Hola habrozhiteli! Hemos lanzado la tercera versión de # 1 Best Seller en Python Programming Amazon , la guía de lenguaje Python más popular del mundo.

No solo puede aprenderlo lo más rápido posible, sino también aprender a escribir programas, corregir errores y crear aplicaciones de trabajo. En la primera parte del libro, se le presentarán conceptos básicos de programación como variables, listas, clases y bucles, y ejercicios simples le enseñarán cómo usar plantillas de código limpio. Aprenderá cómo hacer que los programas sean interactivos y cómo probar el código antes de agregarlo a un proyecto.

En la segunda parte, pondrá en práctica los nuevos conocimientos y creará tres proyectos: un juego arcade al estilo de Space Invaders, visualización de datos con prácticas bibliotecas de Python y una sencilla aplicación web que se puede implementar rápidamente en línea. Al trabajar con un libro, aprenderá: ∙ Use bibliotecas potentes y herramientas de Python: Pygame, Matplotlib, Plotly y Django ∙ Cree juegos 2D de complejidad variable que se pueden controlar con el teclado y el mouse ∙ Cree visualización interactiva de datos ∙ Diseñe, configure e implemente web aplicaciones ∙ Tratar errores y errores

La nueva edición ha sido cuidadosamente revisada y refleja los últimos avances en las prácticas de programación de Python. La primera parte del libro se complementó con nueva información sobre líneas f, constantes y gestión de datos. En la segunda parte, se actualizó el código del proyecto. La estructura y el código del proyecto se han vuelto más limpios y entendibles, ahora usan todo el poder de las bibliotecas y herramientas populares, como Plotly y Django.


El siguiente es un resumen de los cambios en la tercera edición:


En el Capítulo 1, las instrucciones de instalación de Python se simplificaron para los usuarios de todos los principales sistemas operativos. Ahora recomiendo usar el editor de texto Sublime Text, que es popular entre principiantes y profesionales y funciona en todos los sistemas operativos.

El Capítulo 2 proporciona una descripción más detallada de cómo se implementan las variables en Python. Las variables se describen como etiquetas de texto para los valores, lo que permite al lector comprender mejor el comportamiento de las variables en Python. El libro hace un amplio uso de las líneas f introducidas en Python 3.6, un mecanismo mucho más simple y conveniente para usar valores en cadenas. Python 3.6 también introdujo la capacidad de usar guiones bajos para representar números grandes (por ejemplo, 1_000_000); ella también está incluida en esta edición. La asignación múltiple de variables se presentó en uno de los proyectos de la primera edición; la descripción ha sido compilada y trasladada al capítulo 2 para comodidad de los lectores. Finalmente, en este capítulo también se incluye un sistema de convenciones comprensible para representar constantes en Python.

El Capítulo 6 presenta el método get () para leer valores de un diccionario, que puede devolver el valor predeterminado si no hay una clave.

El proyecto Alien Invasion (capítulos 12–14) ahora se basa completamente en el uso de clases. El juego en sí es una clase (en lugar de una serie de funciones, como en la edición anterior). Esto simplifica enormemente la estructura general del juego, reduce el número de llamadas a funciones y los parámetros necesarios. Los lectores familiarizados con la primera edición apreciarán la simplicidad del nuevo enfoque basado en clases. Pygame ahora se puede instalar con un comando de una sola línea en todos los sistemas, y el lector puede elegir entre iniciar el juego en pantalla completa o en modo ventana.

En los proyectos de visualización de datos, las instrucciones de instalación de Matplotlib se han simplificado para todos los sistemas operativos. Las visualizaciones basadas en Matplotlib utilizan la función subplots (), que es más conveniente para aprender a construir visualizaciones complejas. El proyecto Rolling Dice del Capítulo 15 usa Plotly, una biblioteca de visualización con sintaxis simple, mantenimiento de alta calidad y resultados hermosos con ricas opciones de personalización.

En el capítulo 16, el proyecto meteorológico se tradujo en datos de NOAA, lo que demostró una mayor estabilidad a lo largo de los años que el sitio utilizado en la primera edición. El proyecto de mapeo ahora está dedicado a la actividad sísmica global; para cuando se complete el proyecto, se construirá una visualización magnífica, que representará visualmente los límites de las placas tectónicas a lo largo de las coordenadas de todos los terremotos durante un período de tiempo determinado. Aprenderá a mapear cualquier conjunto de datos que contenga coordenadas geográficas.

El Capítulo 17 usa la biblioteca Plotly para visualizar la actividad relacionada con Python en proyectos de código abierto en GitHub.

El proyecto Learning Log (capítulos 18–20) se basa en la última versión de Django, y la última versión de Bootstrap se utiliza para diseñarlo. El proceso de implementación del proyecto en Heroku se ha simplificado mediante el uso del paquete django-heroku, y utiliza variables de entorno en lugar de editar archivos settings.py. Esta solución es más simple y se adapta mejor a cómo los programadores profesionales implementan proyectos modernos de Django.

El Apéndice A ha sido completamente rediseñado. Incluyó recomendaciones para instalar Python. El Apéndice B incluye recomendaciones detalladas para configurar Sublime Text y proporciona breves descripciones de los principales editores de texto y entornos integrados que se utilizan en la actualidad. El Apéndice B proporciona enlaces a recursos en línea más nuevos y más populares para obtener ayuda, y el Apéndice D ofrece un breve tutorial sobre el uso de Git para el control de versiones.

Entendemos que es sorprendente para muchos que hayamos lanzado la tercera edición del libro y el libro original 2ed. La razón de este incidente es simple. Seis meses después del lanzamiento de la primera edición en ruso, el autor realizó cambios significativos pero menores en el libro, corrigió muchos códigos. Después de ver la cantidad de cambios, decidimos nombrar el nuevo libro "Segunda edición". Entonces, la segunda publicación en ruso se lanzó el 30 de mayo de 2017.

Y ahora la segunda edición internacional tuvo que ser lanzada como
“Aprendizaje de Python: programación de juegos, visualización de datos, aplicaciones web. 3ra ed.

Extracto Diccionarios


A veces es necesario guardar muchos diccionarios en una lista o guardar una lista como el valor de un elemento del diccionario. La creación de estructuras complejas de este tipo se denomina incrustación. Puede incrustar varios diccionarios en una lista, una lista de elementos en un diccionario o incluso un diccionario dentro de otro diccionario. Como demuestran los siguientes ejemplos, el apego es un mecanismo extremadamente poderoso.

Listado de diccionarios


El diccionario alien_0 contiene una variedad de información sobre un alienígena, pero no hay lugar para almacenar información sobre el segundo alienígena, sin mencionar toda la pantalla obstruida por extraterrestres. ¿Cómo simular una flota de invasión? Por ejemplo, puede crear una lista de extraterrestres en la que cada elemento es un diccionario con información sobre un extraterrestre. Por ejemplo, el siguiente código crea una lista de tres 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) 

Primero, se crean tres diccionarios, cada uno de los cuales representa un alienígena separado. En el punto ❶, cada diccionario aparece con el nombre de extraterrestres. Finalmente, el programa recorre la lista y muestra cada alienígena:

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

Por supuesto, en un ejemplo realista, se utilizarán más de tres alienígenas, que se generarán automáticamente. En el siguiente ejemplo, la función range () crea una flota 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)}") 

Al comienzo del ejemplo, la lista para almacenar todos los extraterrestres que se crearán está vacía. En el punto ❶, la función range () devuelve un conjunto de números, que simplemente le dice a Python cuántas veces debe repetirse el ciclo. Cada vez que se completa el ciclo, se crea un nuevo alienígena ❷, que luego se agrega a la lista de alienígenas ❸. En el punto ❹, el segmento se usa para generar los primeros cinco extraterrestres, y en el punto ❺ se muestra la longitud de la lista (para demostrar que el programa realmente generó la flota completa 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 

Todos los alienígenas tienen las mismas características, pero Python trata a cada alienígena como un objeto separado, lo que le permite cambiar los atributos de cada propietario individualmente.

¿Cómo trabajar con tantos? Imagina que en este juego algunos alienígenas cambian de color y comienzan a moverse más rápido. Cuando llega el momento de cambiar los colores, podemos usar el bucle for y el comando if para cambiar el color. Por ejemplo, para convertir los primeros tres alienígenas en amarillos, moviéndose a velocidad media y llevando al jugador 10 puntos cada uno, puede hacer esto:

 #      . 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 cambiar los primeros tres alienígenas, iteramos sobre los elementos de un segmento que incluye solo los primeros tres alienígenas. Por el momento, todos los alienígenas son verdes ('verdes'), pero este no siempre será el caso, por lo que escribimos un comando if, que asegura que solo los alienígenas verdes cambiarán. Si el alienígena es verde, entonces su color cambia a amarillo ('amarillo'), velocidad a media ('medio'), y la recompensa aumenta a 10 puntos:

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

El ciclo se puede ampliar agregando un bloque elif para convertir a los extraterrestres amarillos en rojos, rápido y dando al jugador 15 puntos cada uno. No citaremos todo el código, y el bucle se ve así:

 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 

Una solución con el almacenamiento de diccionarios en una lista es bastante común cuando cada diccionario contiene diferentes atributos de un objeto. Por ejemplo, puede crear un diccionario para cada usuario del sitio, como se hizo en el programa user.py en la pág. 114 y guarde los diccionarios individuales en una lista denominada usuarios. Todos los diccionarios de la lista deben tener la misma estructura para que pueda iterar sobre la lista y realizar las mismas operaciones con cada objeto del diccionario.

Lista de diccionarios


En lugar de poner un diccionario en una lista, a veces es conveniente poner una lista en un diccionario. Imagina cómo describirías la pizza ordenada en el programa. Si nos limitamos solo a la lista, solo se puede guardar la lista de ingredientes para la pizza. Cuando se usa un diccionario, la lista de encabezado puede ser solo un aspecto de la descripción de la pizza.

En el siguiente ejemplo, se almacenan dos tipos de información para cada pizza: base y lista de topping. La lista de topping es el valor asociado con la clave 'toppings'. Para usar elementos en la lista, debe especificar el nombre del diccionario y la clave 'toppings', como para cualquier otro valor en el diccionario. En lugar de un valor, se obtendrá una lista de ingredientes:

 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) 

El trabajo comienza en el punto ❶ con un diccionario con información sobre la pizza ordenada. El valor de cadena 'grueso' está asociado con una clave en el diccionario 'corteza'. Otra clave 'coberturas' tiene un valor de lista que almacena todas las coberturas ordenadas. En el punto ❷, se muestra una descripción del pedido antes de crear la pizza. Si necesita dividir una línea larga en una llamada print (), seleccione un punto para dividir la línea de salida y finalice la línea con un presupuesto. Sangra la siguiente línea, agrega una comilla de apertura y continúa con la línea. Python concatena automáticamente todas las cadenas encontradas entre paréntesis. Para la conclusión de las adiciones, se escribe un bucle for ❸. Para enumerar los ingredientes, usamos la tecla 'ingredientes', y Python toma la lista de ingredientes del diccionario.

El siguiente mensaje describe la pizza que estamos por crear:

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

Anidar una lista en un diccionario se puede usar cada vez que se debe asociar más de un valor con una clave de diccionario. Si las respuestas se guardaron en la lista del ejemplo anterior con lenguajes de programación, un participante en la encuesta podría seleccionar varios idiomas favoritos a la vez. Al enumerar un diccionario, el valor asociado con cada persona sería una lista de idiomas (en lugar de un idioma). En el ciclo for del diccionario, se crea otro ciclo para iterar sobre la lista de idiomas asociados con 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()}") 

Verá en el punto ❶ que el valor asociado con cada nombre ahora es una lista. Algunos participantes tienen un lenguaje de programación favorito, mientras que otros tienen varios. Al iterar sobre un diccionario en el punto ❷, se usa una variable llamada idiomas para almacenar cada valor del diccionario, porque sabemos que cada valor será una lista. En el ciclo principal, según los elementos del diccionario, otro ciclo ❸ itera sobre los elementos de la lista de idiomas favoritos de cada participante. Ahora, cada participante de la encuesta puede especificar tantos lenguajes de programación favoritos como desee:

 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 mejorar aún más el programa, incluya un comando if al comienzo del ciclo del diccionario para verificar si el participante ha seleccionado más de un lenguaje de programación (la verificación se basa en el valor de len (idiomas)). Si el participante solo tiene un idioma favorito, el texto del mensaje se cambia por el singular (por ejemplo, "el idioma favorito de Sarah es C").

»Se puede encontrar más información sobre el libro en el sitio web del editor
» Contenidos
» Extracto

Cupón de 25% de descuento para vendedores ambulantes - Python

Tras el pago de la versión en papel del libro, se envía un libro electrónico por correo electrónico.

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


All Articles