Tutorial de Python – Entrega 2

Unas palabrillas…

Como todo en esta vida, hay personas que les fascina lo que haces y a otras no.

El Tutorial de Python que iniciaba esta sección causó muy buena impresión, con unas estadísticas via Twitter y Linkedin fantásticas y, lo más importante, es que hubo personas que se lo tomaron en serio y se dispusieron a programar; sé que algún fallo hay, quiera Dios que yo no sea perfecto (de hecho, soy la definición de imperfecto, que he aprendido a base de muchos errores y más aún sufrimiento), pero esto es lo bueno, que no ha sido un artículo más, lo habéis leído y puesto en funcionamiento. Me llena de satisfacción que se haya acogido tan bien.

Me han preguntado por la gratuidad del curso:

A mí me encanta enseñar, creo que es lo máximo que hay. Aprender no es fácil, pero transmitir lo aprendido o aprender para transmitir es cuando realmente lo aprendes bien. Y más expresarlo en un lenguaje cercano para todos, ahí realmente exprimes todo tu conocimiento.

Python lo he aprendido “por mi cuenta” (bueno, en realidad, como todo mi conocimiento sobre tecnología), pero me puede el encontrarme a personas que quieren aprender y no haya forma de hacerlo, bien porque haya mucho en guiri o porque no todo el mundo sabe enseñar (cada uno tiene su don, hay que reconocerlo). Unas veces no pueden económicamente, otras técnicamente. Si tienes capacidad, que no sea por la oportunidad.

Mi intención es enseñar lo básico para que puedas tener una idea de todo y, si necesitas más, siempre puedes acercarte a cualquier tipo de formación donde quieras profundizar. Si lo quieres hacer conmigo, periódicamente imparto cursos, seminarios y demás, y estaré encantado de atenderte personalmente (y espero que te gusten mis batallitas, porque hay millones).

Gracias de nuevo por vuestro interés.

Algo más sobre Funciones

Tal y como mencionábamos en el articulo anterior, las Funciones son fórmulas que nos facilitan la vida.

En los lenguajes de programación, las funciones pueden ser de 3 tipos:

  1. Las invocas nombrándolas nada más, sin pasarles parámetros (se denominan argumentos), hacen su tarea y no devuelven nada. Se las conoce también como procedimientos (void en guiri), según que lenguaje.
  2. Las invocas y te devuelven valores. Esto es lo más común, ya que esos valores que devuelven son el “resultado” de la fórmula propiamente.
  3. Las invocas, les suministras parámetros, devuelven valores y hacen tareas relacionadas. Ojo que esto puede provocar un “batiburrillo” de cosas no deseadas.

A lo largo y ancho del curso veremos muchas funciones, algunas como procedimientos y otras no.

Módulos

La gran potencia y versatilidad de Python viene a través de los módulos, que son agrupaciones de funciones y variables realizadas por terceros (incluidas las que tú hagas), donde nos facilitan la vida de forma considerable. Existen 2 formas de importar los módulos:

a) Se especifica el módulo entero, de la forma:

b) Se especifica la función que pertenece a un determinado módulo.

Uno de los primeros que se suele ver, por su facilidad de comprensión, es el módulo math.

Math contiene numerosas fórmulas matemáticas muy útiles. Podemos importar la librería completa o sólo las funciones que nos interesen. Se sale de este tutorial verlas todas pero, para que se visualice por pantalla todas las funciones de un módulo, se puede realizar el siguiente código:

Y nos devuelve un listado de todas las funciones que incorpora la librería math:

Por ejemplo, la función pow viene de acortar “power”, es decir, “potencia” en nuestro idioma, y es recomendable mencionar también el módulo junto con la librería. Se utiliza pasándole como primer argumento la variable sobre la que queremos realizar la operación, y como segundo argumento la potencia a la que queremos elevarlo:

Obteniendo el resultado de

Otra función interesante, la raíz cuadrada, en inglés se denomina “square root”, con la abreviatura “sqrt”, funciona como se muestra:

Con resultado:

No está de más recordar que, en Cálculo Numérico, la raíz cuadrada es equivalente a elevar a 1/2 (ó 0.5) cualquier número. Lo podemos comprobar con el siguiente código:

Obteniéndose, como se había adelantado, el mismo resultado:

Otra función también interesante, es el factorial. Se define como el producto de todos los números enteros desde 1 hasta el número, es decir:

Factorial de 10 = 10! = 10 x 9 x 8 x 7 x 6 x 5 x 4 x3 x 2 x 1 = 3628800

Cuyo resultado es:

Lo que más agrada a la comunidad universitaria y científica, es que la traducción de complejas fórmulas matemáticas no resulta compleja, sino que sea hace con una naturalidad con la que, una vez que te acostumbras, no vuelves ni a Mathlab, que ya es. Por ejemplo:

De resultado:

Como podéis apreciar, la realización de las operaciones entre paréntesis predomina sobre las que no lo están, igual como se nos ha enseñado en el cálculo numérico de toda la vida (algún profesor mío de matemáticas está más contento que unas Pascuas de saber que las mates y yo por fin nos reconciliamos). Aparecen en esta expresión el número PI, el número aúreo (e), logaritmos en base 10, en base 2…

Módulo sys

Este módulo provee funciones y procedimientos relativos al sistema operativo donde se ejecuta Python.

Para ir demostrando buenas costumbres, visualicemos sus componentes, como hemos hecho con el módulo de math.

Obteniendo la siguiente salida:

Trabajaremos con unas cuantas, para que veáis el correcto funcionamiento.

En el equipo que me encuentro en estos momentos (no es el mío habitual), tiene la siguiente salida:

Con un resultado de:

Módulo OS

De forma análoga al módulo sys, el módulo OS devuelve parámetros del sistema operativo, siendo muy conveniente utilizarlo cuando estemos escribiendo aplicaciones multiplataforma, así nos olvidamos de la personalización de las rutas de los directorios de cada sistema, por ejemplo.

Con el siguiente resultado:

Por ejemplo, si queremos saber el directorio donde estamos trabajando:

El nombre del usuario actual:

Si queremos terminar el programa que estamos programando:

Métodos

Los datos de ciertos elementos permiten invocar a unas funciones especiales, los denominados “Métodos”: si las funciones las invocamos de la siguiente forma:

funcion (argumento1, argumento2, argumento3,…, argumento n)

Para invocar a los métodos, se realiza de la siguiente manera:

argumento1.metodo (argumento2, argumento3…)

Veámoslo con un ejemplo:

El resultado de este código es:

Como podemos apreciar, lo que ha ocurrido al ejecutar el método lower() es que, bien sea como variable o sin ella, se convierte el contenido de a lo que se ejecuta el método a minúsculas.

Si ejecutamos, en ese mismo código, la instrucción:

Nos devolverá la cadena convertida en la siguiente:

Es decir, capitaliza la primera letra de cada palabra.

Si usamos el método “replace”, obtendremos:

Mostrará el siguiente resultado:

Opciones para presentar valores por consola

Hemos estado utilizando la función print para representar los mensajes que queremos transmitir de todo lo que hemos estado haciendo. Pero print tiene opciones que la potencian muchísimo:

  1. Primera forma: empleando llaves e indicando en su interior el número de argumentos al que hacer referencia.

Su resultado por consola es:

Y si quisiéramos presentar más de un argumento:

Con el resultado siguiente:

Ejercicio Propuesto

Te propongo el siguiente ejercicio, que puedes hacérmelo llegar por Redes Sociales (en Twitter, soy @Kirzahk), para así dar vidilla al Ciberespacio. Si no tienes Twitter, puedes escribirme a mi dirección de gmail.com con mi mismo identificador de Twitter, con la solución del ejercicio.

2. Segunda forma: colocando los valores directamente en las llaves y con “f” delante de la cadena.

Y de resultado se obtiene:

3. La última forma, es la más sencilla y fea de todas.

Y su resultado es:

Hasta ahora, todos los “print” que hemos hecho, son en líneas diferentes. Si queremos escribir en la misma línea, la forma de hacerlo es la siguiente: colocamos al final del print una coma y end=” “, encerrando entre comillas con lo que queramos concatenar ambos print.

Con su correspondiente resultado:

Introducción de datos

Debemos tener en cuenta que, al emplear la consola, TODO lo que entra y TODO lo que sale ha de ser texto, aunque pulsemos números al introducirlos y sean números lo que visualicemos.

Así pues, podríamos hacer el siguiente código:

Según el cual, asignamos a la variable a lo que introduzcamos por el teclado. Siempre que sea un entero, porque de no serlo, se producirá un error.

Un poco más adelante veremos la forma de evitar esa introducción errónea de datos.

Este capítulo finaliza aquí. Sé que es poco, pero es por un motivo: he lanzado en Twitter la petición de quien quiera ofrecer su ID de esta red social para explicar las matrices…

En principio iban a ser unas pocas horas, pero ante la buena acogida, le dedico por completo la entrega 3, y se queda abierto toda la semana.

Gracias a todos.