Think Python, 3.ª edición
(allendowney.github.io)- Libro introductorio de Python para personas que están aprendiendo a programar por primera vez o que tuvieron dificultades en intentos anteriores; se puede pedir la 3.ª edición en papel y en formato ebook
- Todo el libro está en formato de Jupyter notebooks, así que se puede leer el texto, ejecutar código y resolver ejercicios dentro del mismo flujo
- Los notebooks de cada capítulo se pueden ejecutar directamente en Colab, por lo que es fácil empezar a estudiar sin instalar nada aparte
- La 3.ª edición reorganiza el recorrido de aprendizaje con una revisión del contenido, algunos cambios en el orden de los capítulos y más ejercicios
- Las sugerencias al final de cada capítulo sobre cómo usar ChatGPT y Colab AI sirven como apoyo para obtener explicaciones adicionales y ayuda con los ejercicios cuando uno se atasca
Libro introductorio de Python para quienes empiezan desde cero
- Think Python es un libro introductorio de Python para personas que recién se acercan a la programación, o que ya lo intentaron antes pero tuvieron dificultades
- La 3.ª edición en papel y en ebook se puede pedir en Bookshop.org y Amazon
- La página oficial del libro en Green Tea Press se puede ver en Think Python 3rd Edition
- La 3.ª edición está compuesta enteramente como Jupyter notebooks, reuniendo en un solo lugar el texto, el código ejecutable y los ejercicios
- Los notebooks se pueden ejecutar en Colab, lo que reduce la necesidad de instalación
- El contenido fue revisado de forma importante y algunos capítulos fueron reordenados
- Hay más ejercicios
- Al final de cada capítulo se incluye cómo usar ChatGPT y Colab AI para el aprendizaje y la resolución de ejercicios
Notebooks de Colab y materiales para usar en clase
-
Notebooks por capítulo
- El conjunto completo de notebooks cubre 19 capítulos
- Capítulo 1: Programming as a way of thinking — Ejecutar en Colab
- Capítulo 2: Variables and Statements — Ejecutar en Colab
- Capítulo 3: Functions — Ejecutar en Colab
- Capítulo 4: Functions and Interfaces — Ejecutar en Colab
- Capítulo 5: Conditionals and Recursion — Ejecutar en Colab
- Capítulo 6: Return Values — Ejecutar en Colab
- Capítulo 7: Iteration and Search — Ejecutar en Colab
- Capítulo 8: Strings and Regular Expressions — Ejecutar en Colab
- Capítulo 9: Lists — Ejecutar en Colab
- Capítulo 10: Dictionaries — Ejecutar en Colab
- Capítulo 11: Tuples — Ejecutar en Colab
- Capítulo 12: Text Analysis and Generation — Ejecutar en Colab
- Capítulo 13: Files and Databases — Ejecutar en Colab
- Capítulo 14: Classes and Functions — Ejecutar en Colab
- Capítulo 15: Classes and Methods — Ejecutar en Colab
- Capítulo 16: Classes and Objects — Ejecutar en Colab
- Capítulo 17: Inheritance — Ejecutar en Colab
- Capítulo 18: Python Extras — Ejecutar en Colab
- Capítulo 19: Final Thoughts — Ejecutar en Colab
-
Materiales para docentes
- Los notebooks con soluciones se pueden descargar desde el repositorio de GitHub ThinkPythonSolutions
- Los cuestionarios de cada capítulo y un cuestionario integral sobre todo el libro están disponibles bajo pedido
- Se puede leer cómo usar Jupyter de forma efectiva en clase en el libro en línea Teaching and Learning with Jupyter
- En clases basadas en notebooks, se puede usar el enfoque de live coding, donde el instructor escribe código y el alumnado sigue el proceso en su propio notebook
- Los materiales de formación docente para enseñar programación se pueden consultar en Instructor Training de The Carpentries
- Los blank notebooks, que conservan el texto original pero eliminan la mayor parte del código, son útiles para ejercicios guiados en los que el alumnado completa los espacios; están organizados en blank notebooks
1 comentarios
Opiniones en Hacker News
Esta noticia me alegra muchísimo. Cuando publicamos Practical Deep Learning for Coders con Jupyter Notebook, hablé con Allen de hacer lo mismo con algunos de sus libros.
Ahora eso ya está en marcha y, mejor aún, sumaron herramientas geniales como turtle basado en Jupyter, que muestra gráficos en línea dentro del notebook.
Creo que, cuando salga, tiene muchas posibilidades de convertirse en la mejor forma de aprender programación en Python.
Recuerdo que antes también mostré una prueba de concepto convirtiendo parte de la 2.ª edición de este libro a notebooks de nbdev: https://github.com/fastai/nbdev_cards/blob/master/01_deck.ip...
Ese notebook se renderiza en este HTML: https://fastai.github.io/nbdev_cards/deck.html
Cuando aprendo un lenguaje nuevo con cosas como AdventOfCode, mi primera tarea siempre es crear una imagen de Jupyter para ese lenguaje.
La 2.ª edición de Think Python cambió el rumbo de mi vida. Tomé una clase de Java y la odié tanto que abandoné la programación, pero unos años después, trabajando como ingeniero de redes, apareció un problema que parecía poder resolverse con scripts; tomé Think Python y terminé enganchándome con Python y con la programación en sí.
Estoy pensando en cambiar el rumbo de mi vida hacia roles de comunidad/maker/docente, y tengo una idea de freelance/pequeño negocio para enseñar, pero necesito material de “currículo flexible”.
Durante mi trabajo como desarrollador web profesional nunca necesité Python, así que ahora lo estoy aprendiendo. He usado casi todos los lenguajes centrados en la web, incluidos Perl y Ruby.
Python parece un lenguaje adecuado para enseñar conceptos generales, y creo que tener un libro de referencia ayudaría.
Por esa época el lenguaje principal del equipo se definió como Java, y después de ver las ventajas del tipado estático, ya no pude volver atrás.
Desde entonces Python también mejoró mucho gracias al soporte de tipado opcional y a IDEs que lo hacen cumplir, pero hoy estoy completamente inclinado hacia lenguajes de tipado estático.
Para escribir scripts utilitarios, todavía me gusta Python, que es mucho más pulido que usar solo bash. Pero si puedo elegir un lenguaje para una aplicación completa, prefiero Java/Scala, etc. Rust también es excelente, pero para la mayoría de la gente común la curva de aprendizaje es demasiado empinada.
No he usado personalmente el tipado opcional de Python con soporte de herramientas como PyCharm, así que es posible que gracias a las herramientas la experiencia se haya vuelto parecida a la de un lenguaje de tipado estático. Si alguien ha usado IntelliJ Community Edition con la aplicación obligatoria de tipos en Python activada, me gustaría conocer su experiencia.
Me gusta Think Python y se lo he recomendado a muchos estudiantes. Equilibra muy bien varios aspectos que un libro para nuevos programadores debe cuidar.
Allen Downey publicó varios otros libros con un enfoque parecido: https://greenteapress.com/wp/
Creo que algunos se fueron un poco de más hacia reducir el rigor, pero en general los libros que revisé me parecieron bastante buenos.
Una vez compartí mesa con Allen en una conferencia, y cuando le conté con qué frecuencia recomendaba o compraba sus libros, creo que pensó que estaba exagerando.
Perdón por desviar un poco el tema, pero si uno ya tiene experiencia práctica y la sigue acumulando en el trabajo, ¿hay materiales de calidad similar para un desarrollador Python intermedio/avanzado?
Siempre siento que hay grandes partes del lenguaje o de la biblioteca estándar que no conozco.
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/library/index.html
Cada vez que sale una versión nueva leo el documento What’s New.
Además, me gusta leer el código fuente de la biblioteca estándar y de paquetes populares de terceros. Este consejo se aplica en general no solo a Python, sino también cuando aprendes o retomas un lenguaje nuevo.
Y muchas veces, con solo leer las implementaciones anuales de Advent of Code de Norvig, obtengo ideas sobre cómo escribir código Python elegante y conciso.
El autor publica en su blog sus proyectos recientes de Python, principalmente trabajos de análisis bayesiano de datos, en https://www.allendowney.com/blog/, y los estoy siguiendo con bastante interés.
¿Qué libros hay para programación intermedia a avanzada en Python? Ya conozco Python y la programación en general, pero quiero mejorar más mis habilidades en Python.
Por ahora solo conozco más o menos Fluent Python y CPython Internals.
Por ejemplo, Effective Pandas 2 muestra patrones comunes para trabajar con datos tabulares. En el proceso usa comprensiones, lambdas, desempaquetado, etc., y también muestra cómo refactorizar con pytest y cómo usar visualizaciones para entender los datos.
Como referencia, yo soy el autor.
Fluent Pythones suficiente. El resto de las características del lenguaje las vas entendiendo al leer el manual de referencia oficial.En https://www.redblobgames.com/ también hay muchos artículos muy ingeniosos.
Es un libro no tan conocido que explora varios estilos de programación para resolver el mismo problema bajo distintas restricciones.
Cuando pasas cierto nivel de dominio, es decir, más allá del nivel básico de alguien que trabaja en la práctica, lo único que queda es leer y escribir código.
Artículos relacionados:
Think Python 2e - https://news.ycombinator.com/item?id=35421096 - abril de 2023, 30 comentarios
Think Python: How to Think Like a Computer Scientist - https://news.ycombinator.com/item?id=1586000 - agosto de 2010, 9 comentarios
Qué suerte. Justo empecé a mentorear a alguien en Python, y soy un gran fan de Downey. Es un educador y hombre renacentista realmente sobresaliente.
Definitivamente voy a estar pendiente de este libro.
Este libro también me cambió la vida cuando aprendí a programar por primera vez. No tanto por un cambio de carrera, sino porque la forma en que estaba escrito y algunos conceptos hicieron que, de pronto, todo tuviera sentido para mí, que era un principiante absoluto.
Ahora, al ver la 3.ª edición 10 a 15 años después, me da mucha nostalgia, y nunca me cansaré de recomendar este libro.
En la edición anterior, Think Java, me gustaba especialmente este pasaje: https://files.catbox.moe/v1vgdc.jpg
Otra parte genial es esta: