MATTHES, ERIC
PREFACIO A LA TERCERA EDICIÓN
INTRODUCCIÓN
PARTE I. LO BÁSICO
1. PRIMEROS PASOS
Configurar un entorno de programación
Versiones de Python
Ejecutar snippets de código en Python
Sobre el editor VS Code
Python en distintos sistemas operativos
Python en Windows
Python en macOS
Python en Linux
Ejecutar un programa Hello World
Instalar la extensión Python para VS Code
Ejecutar hello_world.py
Solución de problemas
Ejecutar programas de Python desde un terminal
En Windows
En macOS y Linux
Resumen
2. VARIABLES Y TIPOS DE DATOS SIMPLES
Lo que pasa en realidad cuando ejecutamos hello_world.py
Variables
Nombrar y usar variables
Evitar errores con los nombres al usar variables
Las variables son etiquetas
Cadenas
Cambiar mayúsculas y minúsculas en una cadena con métodos
Uso de variables en cadenas
Añadir espacios en blanco a cadenas con tabulaciones o nuevas líneas
Eliminar espacios en blanco
Eliminar prefijos
Evitar errores de sintaxis con cadenas
Números
Enteros
Flotantes
Enteros y flotantes
Guiones en números
Asignación múltiple
Constantes
Comentarios
¿Cómo se escriben los comentarios?
¿Qué tipo de comentarios debería escribir?
El Zen de Python
Resumen
3. INTRODUCCIÓN A LAS LISTAS
¿Qué es una lista?
Acceder a los elementos de una lista
Las posiciones de índice empiezan en 0, no en 1
Usar valores individuales de una lista
Modificar, añadir y eliminar elementos
Modificar elementos en una lista
Añadir elementos a una lista
Eliminar elementos de una lista
Organizar una lista
Ordenar una lista de manera permanente con el método sort()
Ordenar una lista temporalmente con la función sorted()
Imprimir una lista en orden inverso
Descubrir la longitud de una lista
Evitar errores de índice al trabajar con listas
Resumen
4. TRABAJO CON LISTAS
Pasar en bucle por una lista completa
Los bucles en detalle
Sacar más partido a un bucle for
Hacer algo después de un bucle for
Evitar errores de sangrado
Olvidar la sangría
Olvidar sangrar líneas adicionales
Sangrados innecesarios
Sangrado innecesario después de un bucle
Olvidar los dos puntos
Hacer listas numéricas
Utilizar la función range()
Usar range() para hacer una lista de números
Estadística sencilla con una lista de números
Listas por comprensión
Trabajar con parte de una lista
Partir una lista
Pasar en bucle por un trozo
Copiar una lista
Tuplas
Definir una tupla
Pasar en bucle por todos los valores de una tupla
Sobrescribir una tupla
Dar estilo a nuestro código
La guía de estilo
Sangrado
Longitud de línea
Líneas en blanco
Otras directrices de estilo
Resumen
5. SENTENCIAS IF
Un ejemplo sencillo
Pruebas condicionales
Comprobar la igualdad
Ignorar mayúsculas y minúsculas al comprobar la igualdad
Comprobar la desigualad
Comparaciones numéricas
Comprobar varias condiciones
Comprobar si hay un valor en una lista
Comprobar si un valor no está en una lista
Expresiones booleanas
Sentencias if
Sentencias if simples
Sentencias if-else
La cadena if-elif-else
Utilizar múltiples bloques elif
Omitir el bloque else
Probar múltiples condiciones
Utilizar sentencias if con listas
Detectar elementos especiales
Comprobar que una lista no está vacía
Usar múltiples listas
Dar estilo a las sentencias if
Resumen
6. DICCIONARIOS
Un diccionario sencillo
Trabajar con diccionarios
Acceder a los valores de un diccionario
Añadir nuevos pares clave-valor
Empezar con un diccionario vacío
Modificar valores en un diccionario
Eliminar pares clave-valor
Un diccionario de objetos similares
Usar get() para acceder a valores
Pasar en bucle por un diccionario
Pasar en bucle por todos los pares clave-valor
Pasar en bucle por todas las claves del diccionario
Pasar en bucle por las claves de un diccionario en un orden particular
Pasar en bucle por todos los valores de un diccionario
Anidación
Una lista de diccionarios
Una lista en un diccionario
Un diccionario en un diccionario
Resumen
7. ENTRADA DEL USUARIO Y BUCLES WHILE
Cómo funciona la función input()
Escribir indicaciones claras
Usar int() para aceptar entrada numérica
El operador módulo
Introducción a los bucles while
El bucle while en acción
Dejar que el usuario elija cuándo salir
Usar una bandera
Usar break para salir de un bucle
Usar continue en un bucle
Evitar bucles infinitos
Usar un bucle while con listas y diccionarios
Pasar elementos de una lista a otra
Eliminar todos los casos de valores específicos de una lista
Rellenar un diccionario con entrada del usuario
Resumen
8. FUNCIONES
Definir una función
Pasar información a una función
Argumentos y parámetros
Pasar argumentos
Argumentos posicionales
Argumentos de palabra clave
Valores predeterminados
Llamadas a funciones equivalentes
Evitar errores con argumentos
Valores de retorno
Devolver un solo valor
Hacer un argumento opcional
Devolver un diccionario
Usar una función con un bucle while
Pasar una lista
Modificar una lista en una función
Evitar que una función modifique una lista
Pasar un número arbitrario de argumentos
Mezclar argumentos posicionales y arbitrarios
Usar argumentos de palabra clave arbitrarios
Guardar las funciones en módulos
Importar un módulo completo
Importar funciones específicas
Usar as para dar un alias a una función
Usar as para dar un alias a un módulo
Importar todas las funciones de un módulo
Dar estilo a las funciones
Resumen
9. CLASES
Crear y usar una clase
Creación de la clase Dog
El método __init__()
Hacer una instancia de una clase
Trabajar con clases e instancias
La clase Car
Establecer un valor predeterminado para un atributo
Modificar el valor de un atributo
Herencia
El método __init__() para una clase derivada
Definir atributos y métodos para la clase derivada
Anular métodos de la clase base
Instancias como atributos
Modelar objetos del mundo real
Importar clases
Importar una sola clase
Almacenar varias clases en un módulo
Importar varias clases desde un módulo
Importar un módulo entero
Importar todas las clases de un módulo
Importar un módulo en otro módulo
Usar alias
Encontrar su propio flujo de trabajo
La biblioteca estándar de Python
Dar estilo a las clases
Resumen
10. ARCHIVOS Y EXCEPCIONES
Leer de un archivo
Leer los contenidos de un archivo
Rutas de archivo relativas y absolutas
Acceder a las líneas de un archivo
Trabajar con el contenido de un archivo
Archivos grandes: un millón de números
¿Está su cumpleaños contenido en pi?
Escribir a un archivo
Escribir una línea
Escribir múltiples líneas
Excepciones
Manejar la excepción ZeroDivisionError
Usar bloques try-except
Usar excepciones para evitar fallos
El bloque else
Manejar la excepción FileNotFoundError
Analizar texto
Trabajar con múltiples archivos
Fallos silenciosos
Decidir qué errores informar
Almacenar datos
Utilizar json.dumps() y json.loads()
Guardar y leer datos generados por usuarios
Refactorización
Resumen
11. PROBAR EL CÓDIGO
Instalar pytest con pip
Actualizar pip
Instalar pytest
Probar una función
Pruebas unitarias y casos de prueba
Una prueba que pasa
Ejecutar una prueba
Una prueba que falla
Responder a una prueba fallida
Añadir pruebas nuevas
Probar una clase
Varios métodos assert
Una clase para probar
Probar la clase AnonymousSurvey
Configuración de pruebas
Resumen
PARTE II. PROYECTOS
Alien Invasion: Hacer un juego con Python
Visualización de datos
Aplicaciones web
12. UNA NAVE QUE DISPARA BALAS
Planificación del proyecto
Instalar Pygame
Iniciar el proyecto del juego
Crear una ventana de Pygame y responder a entrada de usuario
Controlar la tasa de frames
Configurar el color de fondo
Crear una clase Settings
Añadir la imagen de la nave
Crear la clase Ship
Dibujar la nave en la pantalla
Refactorización: Los métodos _check_events() y _update_screen()
El método _check_events()
El método _update_screen()
Pilotar la nave
Responder a pulsaciones de teclas
Permitir un movimiento continuo
Movimiento hacia la izquierda y hacia la derecha
Ajustar la velocidad de la nave
Limitar el alcance de la nave
Refactorización de _check_events()
Pulsar Q para salir
Ejecutar el juego en modo pantalla completa
Un resumen rápido
alien_invasion.py
settings.py
ship.py
Disparar balas
Añadir la configuración de las balas
Crear la clase Bullet
Agrupar balas
Disparar balas
Borrar las balas viejas
Limitar el número de balas
Crear el método _update_bullets()
Resumen
13. ¡ALIENÍGENAS!
Revisión del proyecto
Crear el primer alien
Crear la clase Alien
Crear una instancia de Alien
Crear la flota extraterrestre
Crear una fila de alienígenas
Refactorización de _create_fleet()
Añadir filas
Hacer que se mueva la flota
Mover los aliens hacia la derecha
Crear configuraciones para la dirección de la flota
Comprobar si un alien ha llegado al borde
Descenso de la flota y cambio de dirección
Disparar a los aliens
Detectar colisiones de balas
Hacer balas más grandes para pruebas
Repoblar la flota
Acelerar las balas
Refactorización de _update_bullets()
Fin del juego
Detectar colisiones entre un alien y la nave
Responder a colisiones entre aliens y la nave
Aliens que llegan al fondo de la pantalla
Game Over
Identificar cuándo deberían ejecutarse partes del juego
Resumen
14. PUNTUACIÓN
Añadir el botón Play
Crear una clase Button
Dibujar el botón en la pantalla
Iniciar el juego
Reiniciar el juego
Desactivar el botón Play
Ocultar el cursor del ratón
Subir de nivel
Modificar las configuraciones de velocidad
Restablecer la velocidad
Puntuaciones
Mostrar la puntuación
Crear un marcador
Actualizar la puntuación a medida que se abaten aliens
Restablecer la puntuación
Asegurarse de contabilizar todos los aciertos
Aumentar los valores en puntos
Redondear la puntuación
Puntuaciones altas
Mostrar el nivel
Mostrar el número de naves
Resumen
15. GENERAR DATOS
Instalar Matplotlib
Trazar un gráfico de líneas sencillo
Cambiar el tipo de etiqueta y el grosor de la línea
Corregir el trazado
Utilizar estilos integrados
Trazar puntos individuales y darles estilo con scatter()
Trazar una serie de puntos con scatter()
Calcular datos automáticamente
Personalizar las etiquetas de los puntos de los ejes
Definir colores personalizados
Utilizar un mapa de color
Guardar los trazados automáticamente
Caminatas aleatorias
Crear la clase RandomWalk()
Elegir direcciones
Trazar una caminata aleatoria
Generar múltiples caminatas aleatorias
Dar estilo a la caminata
Tirar dados con Plotly
Instalar Plotly
Crear la clase Die
Tirar el dado
Analizar los resultados
Hacer un histograma
Personalizar el gráfico
Tirar dos dados
Más personalizaciones
Tirar dados de distinto tamaño
Guardar figuras
Resumen
16. DESCARGAR DATOS
El formato de archivo CSV
Analizar los encabezados de archivo CSV
Imprimir los encabezados y sus posiciones
Extraer y leer datos
Trazar datos en un gráfico de temperatura
El módulo datetime
Trazar fechas
Trazar un periodo de tiempo más largo
Trazar una segunda serie de datos
Sombrear un área del gráfico
Comprobación de errores
Descargar sus propios datos
Mapear conjuntos de datos globales: formato JSON
Descargar datos de terremotos
Examinar datos JSON
Hacer una lista con todos los terremotos
Extraer magnitudes
Extraer datos de ubicación
Crear un mapa del mundo
Representar magnitudes
Personalizar los colores de los marcadores
Otras escalas de colores
Añadir texto emergente
Resumen
17. TRABAJAR CON API
Usar una API
Git y GitHub
Solicitar datos usando una llamada a la API
Instalar solicitudes
Procesar una respuesta de la API
Trabajar con el diccionario de respuesta
Resumir los principales repositorios
Monitorizar los límites de cuota de la API
Visualizar repositorios con Plotly
Dar estilo al gráfico
Añadir mensajes emergentes personalizados
Añadir enlaces activos a nuestro gráfico
Personalizar los colores de los marcadores
Más sobre Plotly y la API de GitHub
La API de Hacker News
Resumen
18. PRIMEROS PASOS CON DJANGO
Configurar un proyecto
Escribir una especificación
Crear un entorno virtual
Activar el entorno virtual
Instalar Django
Crear un proyecto en Django
Crear la base de datos
Visionar el proyecto
Iniciar una aplicación
Definir modelos
Activar modelos
El sitio admin de Django
Definir el modelo Entry
Migrar el modelo Entry
Registrar Entry con el sitio Admin
El intérprete de Django
Crear páginas: La página de inicio de Learning Log
Asignar una URL
Escribir una vista
Escribir una plantilla
Crear páginas adicionales
Herencia de plantillas
La página topics
Página de temas individuales
Resumen
19. CUENTAS DE USUARIO
Permitir que los usuarios introduzcan datos
Añadir temas nuevos
Añadir nuevas entradas
Editar entradas
Configurar cuentas de usuario
La aplicación accounts
La página de inicio de sesión
Cerrar sesión
La página de registro
Permitir que los usuarios controlen sus datos
Restringir el acceso con @login_required
Conectar datos con determinados usuarios
Restringir el acceso a temas a los usuarios adecuados
Proteger los temas de un usuario
Proteger la página edit_entry
Asociar temas nuevos con el usuario actual
Resumen
20. ESTILO Y DESPLIEGUE DE UNA APP
Dar estilo a Learning Log
La aplicación django-bootstrap5
Usar Bootstrap para dar estilo a Learning Log
Modificar base.html
Dar estilo a la página de inicio con un jumbotron
Dar estilo a la página de inicio de sesión
Dar estilo a la página de temas
Dar estilo a las entradas en la página de un tema
Desplegar Learning Log
Crear una cuenta en Platform.sh
Instalar la CLI de Platform.sh
Instalar platformshconfig
Crear un archivo requirements.txt
Requisitos de despliegue adicionales
Añadir archivos de configuración
Modificar settings.py en Platform.sh
Usar Git para hacer un seguimiento de los archivos del proyecto
Crear un proyecto en Platform.sh
Pasar a Platform.sh
Ver el proyecto en vivo
Refinar el despliegue de Platform.sh
Crear páginas de error personalizadas
Desarrollo continuo
Borrar un proyecto en Platform.sh
Resumen
PARTE III. APÉNDICES
APÉNDICE A. INSTALACIÓN Y SOLUCIÓN DE PROBLEMAS
APÉNDICE B. EDITORES DE TEXTO E IDE
APÉNDICE C. CONSEGUIR AYUDA
APÉNDICE D. USAR GIT PARA EL CONTROL DE VERSIONES
APÉNDICE E. SOLUCIONAR PROBLEMAS DE IMPLEMENTACIÓN
ÍNDICE ALFABÉTICO
Este superventas mundial es una guía al lenguaje de programación Python. Gracias a esta trepidante y completa introducción a Python, no tardará en empezar a escribir programas, resolver problemas y desarrollar aplicaciones que funcionen.Esta tercera edición actualizada se ha revisado en profundidad con el fin de reflejar las últimas novedades en Python. Se incluye la incorporación de VS Code para la edición de texto, el módulo pathlib para la gestión de archivos y pytest para probar el código, así como los últimos cambios en Matplotlib, Plotly y Django.Comenzará aprendiendo conceptos básicos de programación, como "variables", "listas", "clases" y "bucles" y practicará la creación de código limpio con ejercicios sobre cada tema. Además, aprenderá a escribir programas interactivos y a probar su código con seguridad antes de añadirlo a un proyecto. En la segunda parte del libro, pondrá sus nuevos conocimientos en práctica con tres proyectos: un juego arcade inspirado en Space Invaders, un conjunto de visualización de datos con las útiles librerías de Python y una sencilla aplicación web que podrá desplegar en línea.Si tiene ganas de profundizar en la programación, este libro le ayudará a escribir programas de verdad rápidamente. ¿Por qué esperar más? ¡Empiece ya a programar!