Revisión del libro “Python 3, Curso Práctico” de Alberto Cuevas

Nos han pedido una revisión de un nuevo libro sobre Python en español. El libro se titula 'Python 3, Curso Práctico' y lo ha escrito Alberto Cuevas Álvarez. Si seguís leyendo podréis ver cómo ganar una copia en papel del mismo ;-D

Primero de todo, algunas características del libro:

  • Título: Python 3, Curso Práctico.
  • Autor: Alberto Cuevas Álvarez
  • Año de edición: 2016
  • Nº páginas: 560
  • ISBN: 978-84-9964-658-9
  • Editorial: RA-MA EDITORIAL
  • Encuadernación: Rústica
  • Idioma: Español (de España).
  • Versión de Python usada en el libro: 3.3
  • Link: http://www.ra-ma.es/libros/PYTHON-3-CURSO-PRACTICO/94627/978-84-9964-658-9
  • Precio: 31.90 € para la versión en papel.
  • Versión electrónica: No disponible de momento.

Le hemos pedido al autor que nos defina su intención al escribir el libro y esta es la frase resumen que nos ha enviado:

"Mi intención a la hora de realizar el libro ha sido explicar los fundamentos básicos de Python y las herramientas necesarias dentro de su ecosistema para conseguir crear aplicaciones gráficas completas en 2D ."

Como venimos haciendo, vamos a ir viendo el libro capítulo a capítulo para poder comentar de forma pormenorizada las pequeñas piezas que componen el mismo:

INTRODUCCIÓN

El libro empieza fuerte explicando, aunque sea muy por encima, cosas básicas de programación que pueden venir bien para fijar ciertos conceptos si no se dispone de cierto bagaje en ciencias de la computación.

EMPEZANDO A PROGRAMAR

En este punto se introducen conceptos importantes como lo que son las variables, cómo se asignan, ciertas funciones integradas (builtin) en el intérprete, operadores,etc. Cosas básicas introducidas en el momento oportuno. Está bien lo detallado de algún punto con múltiples ejemplos útiles. Se comenta la instalación de PyScripter, un IDE solo windows 🙁

ELEMENTOS FUNDAMENTALES DE PROGRAMACIÓN: INSTRUCCIÓN CONDICIONAL Y BUCLES

El capítulo habla de forma extensa del control de flujo, bucles y condiciones. Muy detallada la explicación de las condiciones. En este mismo capítulo se introducen algunas cosas que no tienen mucha relación como el mecanismo del import (explicado muy brevemente), el uso de números aleatorios (que no tiene mucha relación con el resto de contenidos del capítulo), depuración con PyScripter (menos útil para personas fuera de Windows),...

PROGRAMACIÓN FUNCIONAL

El título del capítulo es algo desafortunado ya que no estamos hablando sobre programación funcional sino sobre el uso de funciones en Python y esto podría confundir a alguien. El capítulo es muy completo para aprender a usar funciones en Python, el 'scope' de las variables, los parámetros y argumentos,... Nuevamente, algún ejemplo podría resultar confuso pero, en general, está bastante completo. Echo en falta que se nombre a las funciones lambda.

PROGRAMACIÓN ORIENTADA A OBJETOS

Llegamos a la parte de clases y la programación orientada a objetos (POO). El capítulo es bastante extenso y se explican muchas cosas, algunas de ellas avanzadas. Sin duda, este es el capítulo del libro que me gusta menos. Los ejemplos que se usan no son muy ortodoxos, nuevamente se recurre a casos muy particulares que provocan, siempre en mi modesta opinión, que algunas cosas resulten en más complejas de lo que deberían en este punto. Una buena parte del capítulo se habla sobre como se hacen algunas cosas con PyScripter lo que le resta valor a usuarios fuera de Windows.

TIPOS DE DATOS EN PYTHON

Este capítulo es muy detallado. Se explica con mucha profundidad los tipos básicos en Python, cadenas, listas, tuplas, conjuntos y diccionarios. Podría, incluso, servir como guía de referencia en español del uso de estos tipos  por lo detallado (son unas 90 páginas). Además, se usan muchísimos ejemplos para explicar los conceptos.

FICHEROS Y EXCEPCIONES

Se habla sobre cómo poder usar ficheros para leer y escribir información. Esta parte es muy detallada y extensa con múltiples ejemplos útiles. La parte de excepciones es más que correcta con un alcance adecuado para introducirlos. Por último, se muestra el uso de with pero se despacha en menos de una página por lo que me parece insuficiente. Este capítulo y el anterior son los que más me gustan del libro.

PROGRAMACIÓN GRÁFICA EN PYTHON MEDIANTE PYQT

No es normal encontrar una introducción a interfaces gráficas en un libro introductorio. Como mucho, se muestra un ejemplo básico para dejar al lector que se introduzca por su cuenta en el tópico si tiene interés. En este caso se hace una introducción mucho más extensa que el ejemplo típico por lo que si tienes interés en crear interfaces gráficas estás de suerte. Sin embargo, si no tienes mucho interés en ello, se van muchas páginas en ello. Se explican de forma detallada muchos de los widgets disponibles en PyQt y está muy enfocado a crear las interfaces usando Qt Designer.

GENERACIÓN DE GRÁFICOS EN PYTHON MEDIANTE MATPLOTLIB

Nuevamente, se introduce otra librería que quizá no sea de interés para todo el mundo. En alrededor de 50 páginas se habla sobre cómo instalar la librería, cómo usar pyplot con muchos ejemplos, como usar matplotlib usando POO y cómo integrar matplotlib en una aplicación PyQt. Reitero, si tienes interés en hacer gráficas tienes suerte pero si no es así se te van otras 50 páginas de libro en ello.

Apuntes varios sobre el libro:

Me gusta:

  • Lo detallado de la explicación del if en el capítulo 3.
  • Que no haya referencias a Python 2.
  • Lo detallado de la explicación de las funciones.
  • Lo detallado de la explicación de los tipos básicos de Python pudiendo servir, incluso, como guía de referencia en español.
  • La parte del tratamiendo de ficheros y excepciones se hace con un alto nivel de detalle.
  • La extensión del libro, que permite poder desarrollar algunos temas de forma muy completa.
  • Que sea en español.

No me gusta:

  • El uso de eval en muchos ejemplos del libro lo considero una mala práctica.
  • No se respeta el PEP8, enseñando malas prácticas, lo cual no me parece adecuado en un curso introductorio.
  • Algunos ejemplos usan casos extremos para explicar ciertos conceptos. Estos casos extremos pueden ser detalles de la implementación y no los considero adecuados ya que en lugar de ayudar pueden resultar más confusos.
  • Está muy enfocado a Windows (uso de PyScripter, instalaciones) haciendo que una buena parte de las páginas sea menos útil para gente que use otros sistemas operativos.

Conclusión

El libro tiene algunos altibajos con partes que brillan con luz propia y partes que mejoraría.

Si de mi dependiera me gustaría que algunas cosas se explicasen un poco mejor, como el uso de with, las funciones lambda, el mecanismo del import, la parte de POO. Metería partes con muchas librerías útiles de la librería estándar (math, itertools, datetime, os, sys, collections,...), como crear paquetes y módulos,... Reduciría o eliminaría los dos últimos capítulos.

Como comentario general, considero que el libro está bien pero, como todo en esta vida, se podría mejorar en algunos aspectos.

Sorteamos una copia entre nuestros lectores

El autor nos envió varias copias del libro. Una de ellas la vamos a sortear entre todos los lectores de Pybonacci residentes en España. Para participar:

  • Solo tienes que escribir un tweet indicando porqué te gustaría tener este libro incluyendo un enlace a http://www.ra-ma.es/libros/PYTHON-3-CURSO-PRACTICO/94627/978-84-9964-658-9
  • Una vez enviado el tweet nos lo enlazas en los comentarios de más abajo para que no se nos escape el tweet.
  • Si no tienes cuenta en twitter, déjanos un comentario más abajo indicando porqué te gustaría tener este libro.

Tenéis hasta el miércoles, 2 de noviembre a las 21:00:00 (CET) para participar en el sorteo. Después de pasada la fecha indicaremos cómo se hará el sorteo (actualizando algunas cosas de aquí), usando el número ganador del sorteo de la ONCE de ese día (2016/11/02) y anunciaremos el ganador.

Actualización: Resultado del sorteo

El número de la ONCE fue el 69907. Si introducís el código aquí:

sale que el ganador ha sido @FlixUjo. He usado los participantes por orden de fecha en su comentario, del más antiguo al más nuevo:

participantes = ['FlixUjo', 'Javier @runjaj', 'Antonio Molina',
'Raúl', 'José Carlos Juanos', 'Christian',
'Kike', 'Eduardo Campillos']

Enhorabuena al vencedor, por favor, mándanos un DM por twitter o usa el formulario de contacto para mandarnos una dirección de correo/teléfono o lo que prefieras.

Saludos a todos.

Revisión del libro “Introducción a la programación con Python” de Nilo Menezes

En esta entrada vamos a hablar sobre el libro "Introducción a la programación con Python" escrito por Nilo Ney Coutinho Menezes.

El autor del libro se puso en contacto gentilmente con la "Pybonacci Crew" para hacer una revisión de su libro. Nosotros, como no podía ser de otra forma, hemos intentado colaborar agradeciendo su confianza.

Algunas generalidades del libro:

  • Escrito en español, cosa que se agradece dentro del desierto de recursos en español.
  • La calidad del libro en papel está muy bien y el diseño es bonito.
  • La primera edición en español (Julio/2016), que es la que hemos revisado, tiene un total de 336 páginas. En todo el libro no hay páginas en blanco para hacer que el libro sea más gordo, las partes de códigos de ejemplo del libro se saltan la parte relevante de saltos de línea del PEP-8 para que el libro sea más compacto incluso. Por tanto, tenemos un libro donde la mayor parte de las 336 páginas son páginas escritas y condensadas para que quepa incluso más en menos (less is more).
  • El libro es una traducción de un texto escrito en portugués/brasileño que ya va por su segunda edición y que se usa como texto introductorio en algunas universidades brasileñas.
  • Usa Python 3 en todo el libro (Python 3.4 para ser más precisos, aunque todo el código funcionará en Python 3.5 sin problemas).
  • La tabla de contenidos está aquí.
  • Su precio es inferior a los 25€.
  • Si vas a la PyConES podrás hablar con el autor en persona y pedirle que te ¡¡firme un ejemplar!!
  • No está disponible en formato electrónico.
Introducción a la programación con Python
Introducción a la programación con Python

Vamos a repasar un poco la estructura del libro capítulo a capítulo:

1. Motivación

El libro empieza con una declaración de intenciones sobre las motivaciones para aprender a programar y sobre porqué programar. Me parece una buena forma de empezar y de indicarle al lector que el camino que pretende empezar no es sencillo pero sí muy interesante y motivador y que le permitirá poder aprender a hacer cosas increibles que pueden incluso hacer cambiar el mundo (no sé si a mejor o a peor).

2. Preparando el ambiente

Aquí se hace una introducción muy detallada sobre como hacer funcionar (C)Python en tu sistema operativo paso a paso (sobre todo en el caso de Windows). Es obvio que es más detallado en Windows ya que en Linux o MacOS Python suele venir preinstalado. En el caso de Windows vienen pantallazos de todo el proceso. Además, enseña cómo usar el IDLE.

3. Variables y entrada de datos

En el capítulo 3 empezamos a programar en Python y a aprender código Python. Es una introducción muy sencilla a como usar variables y como introducir valores desde el intérprete.

4. Condiciones

Como era de esperar se explican un poco de control de flujo empezando por las condiciones y como ejecutar código si se cumplen determinados requerimientos. Nuevamente, la introducción a condiciones se hace de una forma simple y directa sin perdernos en casos extremos o singulares que nos harían perder el foco del aprendizaje.

5. Repeticiones

Todo el capítulo se dedica a hablar del uso de while y cómo romper el bucle y usar condiciones para realizar determinadas tareas. Se introducen conceptos como break.

6. Listas

En este momento se empieza a hablar de secuencias (listas, tuplas, diccionarios,...), sus métodos, cómo acceder a los elementos (indexación, clave),... Continuando con los bucles, que se introdujeron en el capítulo anterior, hay un pequeño apartado para hablar de for. Se habla de conceptos como pilas y colas de forma muy sencilla, se muestra un ejemplo del método de la burbuja para ordenación (bubble sort),... En fin, que mientras enseña tipos de datos muy comunes en programación, como por ejemplo las listas de python, enseña otros conceptos más generales de forma simple y amena.

Una cosa que no me gusta en exceso es que en este capítulo nombra el uso de objetos y métodos sin haber, siquiera, hablado sobre programación orientada a objetos. Un novato en programación no debería entender a qué se refiere en este momento cuando se usan palabras como 'objeto' y un pequeño inciso para nombrar lo que es la programación a objetos o la eliminación total de referencias a objetos y métodos quizá sería más adecuado. Sé que no es sencillo abstraerse totalmente de algunos conceptos e incluso obviarlos llegados a determinado punto. Aún así, el capítulo se entiende completamente sin grandes problemas.

7.Trabajando con cadenas de caracteres

Este es otro capítulo muy completo donde entramos en el mundo de las cadenas de caracteres (strings). Se habla del trabajo típico con cadenas y de la funcionalidad más básica como contar, sustituir, eliminar,..., caracteres. Además, se hace una gran y completa introducción a como formatear cadenas usando format (muchísimo más completo que el que hicimos nosotros aquí hace un tiempo). Acaba el capítulo programando un ejemplo del juego del ahorcado.

8. Funciones

El capítulo vuelve a ser una delicia de leer ya que introduce los diferentes términos poco a poco y de forma escalonada para ir de menos a más. Se habla de funciones lambda, del scope de las variables, de los argumentos, las palabras clave, argumentos opcionales,... Además, se meten otros conceptos como los módulos para ordenar nuestro código, empaquetamiento y desempaquetamiento de parámetros,...

 9. Archivos

En este momento se habla sobre cómo trabajar con archivos de texto. Un capítulo siempre necesario en cualquier texto introductorio. Nuevamente, se explica todo con sencillez y de forma ordenada yendo de menos a más. También se muestra como trabajar con directorios y archivos desde Python usando el módulo os.path. En este punto, se usan programas donde se incluye todo lo adquirido en el resto de capítulos de forma muy natural.

En este capítulo se usan ejemplos en los cuales se escriben documentos HTML los cuales los veo menos útiles que otros ejemplos típicos y, en mi opinión, más generales como usar un fichero json o un fichero csv,...

10. Clases y objetos

Ahora es cuando se muestra como usar clases y objetos. Se habla sobre herencia, métodos mágicos, sobrecarga de operadores,..., y se realiza un ejemplo muy extenso sobre una aplicación de una agenda.

En este momento considero que hay un salto muy abrupto en la curva de aprendizaje del libro. Hasta el capítulo 9 todo está explicado de forma detallada y paso a paso. En este momento se introduce la explicación del uso de clases y objetos y conceptos de programación orientada a objetos de forma que la curva de aprendizaje cambia su pendiente hablando de conceptos relativamente avanzados como la sobrecarga de operadores (sin nombrar el término), se introduce el uso de decoradores sin apenas explicación, se meten conceptos como super sin ninguna referencia previa,... El ejemplo de aplicación que se realiza en el capítulo pienso que es un poco avanzado y la explicación de los objetos que se hace está muy enlazada a cómo son los objetos en Python y no sobre hablar de objetos en general y de forma más abstracta.

11. Banco de datos

Aquí se habla sobre SQL y SQLite con Python. Se enseñan cosas básicas del lenguaje SQL y algunas cosas específicas del uso de SQL con SQLite y Python. Se ahonda en el ejemplo del capítulo anterior de la aplicación de una agenda cambiando algunas cosas para poder trabajar con una BBDD por debajo.

Este capítulo lo veo más accesorio y podría ser un apéndice o un capítulo en un libro más extenso y que entra en más profundidad en otra serie de conceptos. Dentro de un curso introductorio dónde se usa Python para aprender programación, el hecho de que se incluya un nuevo apartado con un nuevo lenguaje, SQL, con cosas específicas de SQLite no me resulta de lo más apropiado.

12. Próximos pasos

Se dan recomendaciones de por dónde seguir en este vasto mundo de la programación con enlaces a sitios y libros interesantes.

El capítulo es muy cortito (4 páginas) y se podría prescindir de él sin problemas.

Apéndice A. Mensajes de Error

Una pequeña revisión sobre los mensajes de error más típicos que nos podemos encontrar cuando empezamos a programar con Python.

Es muy útil tener una pequeña explicación sobre los errores más típicos que nos vamos a ir encontrando y cómo aprender a interpretarlos.

Apuntes varios sobre el libro:

Me gusta:

  • Lo detallado de las explicaciones en todos los capítulos excepto en los capítulos 10 y 11. En general, todo el libro es muy sencillo de seguir, todos los ejemplos están en formato digital para poderlos descargar. Me gusta especialmente la introducción a conceptos como pilas y colas, lo detallado del uso de format,...
  • Que en la página web dispones de varios vídeos para la parte más inicial del libro.
  • Que está en español.
  • Que use Python 3.
  • Que el precio del libro está bastante ajustado.
  • La predisposición del autor a introducir mejoras en futuras ediciones del libro.

No me gusta:

  • No me gusta que use el 'old style formatting' cuando en Python 3 se introdujo format y ahora se está introduciendo un nuevo formateo más potente incluso que format.
  • No me gusta que use unicode en la definición de variables, funciones, etcétera. Por ejemplo,
    def rectángulo(...):
        ...
    

    Esta práctica puede dar lugar a errores tontos por olvidar una tilde, puede dificultar el trabajo en equipos multiculturales,...

  • En general, la traducción es muy mejorable. El texto se puede entender sin problemas por cualquier hispanohablante pero la traducción se puede mejorar bastante y no haría deslucir a un gran libro de introducción a la programación.
  • El capítulo 10 es un poco errático y da un salto cuantitativo grande en lo que a complejidad se refiere.
  • El capítulo 11 es un capítulo que está bien tener pero que eliminaría del libro si el foco del autor es ponérselo lo más fácil posible a los que se están iniciando en un lenguaje de programación. Creo que desvía un poco el foco general del libro aunque los conceptos que se expliquen en ese capítulo sean extremadamente interesantes.
  • Me gustaría que todos los ejemplos del libro cumpliesen con el PEP-8. Cuando se está aprendiendo algo es cuando hay que introducir una serie de convenciones y buenas prácticas. Si se adquieren malos hábitos desde un principio luego es más difícil corregirlos.
  • Me gustaría que hubiera versión electrónica.

¿Compraría este libro?

Si se cumple que no sé leer en inglés y no tengo nociones de programación sin duda SÍ que compraría este libro, a pesar de algunas cosas que he puesto más arriba en el 'No me gusta'. Algunos de esos 'No me gusta' hacen deslucir un poco el libro pero más a nivel formal que a nivel general y técnico. Es un libro de buena calidad a un precio ajustado pero que se puede mejorar en distintos partes de forma sencilla.

Sorteamos una copia entre nuestros lectores

El autor nos envió tres copias del libro. Dos se han usado en los PyDay de Mallorca y de Madrid. El tercero lo vamos a sortear entre todos los lectores de Pybonacci que además tengan entrada para la PyConES de este año. Para participar:

  • Solo tienes que escribir un tweet indicando porqué te gustaría tener este libro incluyendo un enlace a https://librodepython.com/
  • Una vez enviado el tweet nos lo enlazas en los comentarios de más abajo para que no se nos escape el tweet.
  • Si no tienes cuenta en twitter, déjanos un comentario más abajo indicando porqué te gustaría tener este libro.

Tenéis hasta el miércoles, 21 de septiembre, a las 23:59:59 par participar en el sorteo. Al día siguiente se hará público el ganador y se entregará físicamente en la PyConES de Almería.

[Actualización] Anoche se cerró el plazo por lo que el ganador saldrá entre:

Sergio, Manuti, Miguel, Aníbal, Alberto y José.

Para saber quién ha ganado podréis meter el número ganador del sorteo de la ONCE de hoy (2016/09/22) en el formulario de más abajo.

Nos pondremos en contacto con el ganador en breve.

Saludos a todos.