Curso intensivo de Python. Tercera Edición
Autor/a : Eric Matthes
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.
Índice
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