Programación Práctica con Python 1: Elementos básicos
Por @jobliz
En el capítulo anterior…
En el post anterior presentamos al lenguaje Python, cómo instalarlo, y el propósito de ésta serie de tutoriales. La idea es llegar a la parte práctica lo más pronto posible, aunque cómo también se quiere que quienes estén empezando de cero puedan seguirlos, entonces dedicaremos dos entregas a los fundamentos de la programación en Python:
En ésta, veremos los elementos básicos del lenguaje, variables, condicionales, ciclos, etc, y además algunas de las costumbres de los programadores. Si ya tienes algo de experiencia en Python puedes pasar directamente a la próxima.
En la siguiente, veremos cómo se organiza el código en Python: Cómo acceder al código que hemos escrito en otro archivo, que es un módulo, y los sitios de donde se suelen descargar desde internet. Ésta parte es fundamental para el programador en Python y en cualquier otro lenguaje, ya que conseguir módulos ya hechos por otras personas simplifica mucho todo trabajo. Además, todo lo que se hará en la parte práctica de éstos tutoriales requerirá instalarse de las maneras expuestas.
Nota: Para tener una visión más amplia del lenguaje que la aquí presentada, puedes revisar éstos materiales:
Los primeros 4 capítulos de How To Think like a Computer Scientist
Los ejercicios del 0-6 y 18-21 de Learn Python the Hard Way
Antes de empezar.
Para escribir código hace falta un editor de texto hecho especialmente para eso. En realidad es posible hacerlo hasta en el bloc de notas, pero resulta extremadamente incómodo, como lo sería pelar una papa con una cuchara. Simplemente no está hecha para eso. Al instalar Python en Windows éste viene automáticamente con el editor IDLE, que es bastante bueno. y que será el que usaremos aquí. Éste, sin embargo, sólo tiene soporte para Python. Si en algún momento decides programar en otro lenguaje, es conveniente que busques un editor especializado en dicho lenguaje, o un editor multilenguaje cómo Notepad++.
Si estás en Linux, puedes instalar IDLE usando el gestor de paquetes de tu distro.
En realidad, la cultura de la programación tiene un gran número de editores de código, y éstos a su vez vienen en formas distintas. Otros lenguajes de programación como Java o los de Microsoft (C#, Visual Basic) tienen una cultura de IDE (entorno integrado de desarrollo), donde un programa complejo y con muchas funciones es necesario para aprovechar el lenguaje al máximo. Sigue siendo posible escribirlo con editores más sencillos, pero eso no forma parte de las costumbres de su comunidad. La descarga del “lenguaje” siempre viene junto a la gran herramienta, como Visual Studio en el caso de C# o Netbeans en el caso de Java.
Python, y a su vez otros lenguajes como PHP y Ruby, también tienen programas como esos, pero en general dependen menos de ellos. Si te preguntastes porqué la descarga de Python era tan ligera, y no un archivo de 200+ megabytes, ello se debe a que el instalador sólo trae el lenguaje y una herramienta sencilla para manejarlo, no un entorno de desarrollo completo.
Ahora que tenemos nuestro editor de textos, es hora de usarlo. En IDLE, escribe ésto y presiona F5
print("Hola mundo")
Ello hará que la ventana de al lado en IDLE salude al mundo educadamente. Ésto, aunque sencillo, en realidad es una pequeña costumbre dentro del mundo del código. Ahora que escribistes un programa, aunque sea pequeño, programas. ¡Bienvenid@!.
Sí, lo sé. ésto no es mucho, y prometí cosas maś prácticas en la introducción. Te prometo que dentro de dos tutoriales estaremos accediendo a la búsqueda de Twitter a través de internet, así que te pediré un poco más de paciencia.
Manejando datos.
Cuando nos disponemos a la idea de programar, lo más inmediato que hacemos es pensar en datos. ¿Qué queremos manejar, y de qué manera el lenguaje de programación nos permite hacerlo?. Por lo general, todos los lenguajes ofrecen una manera sencilla de usar:
Números enteros, para manejar las cantidades más comunes. Un gran cantidad de “cantidades” con las que trabajaremos serán de éste tipo. Comúnmente se les llama integers o ints.
Números decimales, para manejar todas las cantidades que requieren más exactitud que un integer. Éstos reciben el curioso nombre de floats por la forma en que se implementan en el CPU. No es imprescindible conocer los detalles cuando se programa en Python, aunque más adelante veremos que igual hace falta algo de cuidado al manejarlos.
Texto, una manera de representar secuencias de letras de la forma más sencilla posible. Palabras, oraciones, párrafos, todo lo que queramos usar en el programa que sea combinaciones de caracteres. A eso se les llama strings, o cadenas en español, porque son cadenas de caracteres. Por cierto, haz click derecho en ésta página, y dale a Ver código Fuente. El código HTML también puede ser una string. De hecho, nos hará falta pensar así cuando vayamos a acceder a internet y a Twitter con nuestro código Python.
Valores Booleanos, que sólo pueden representar dos cosas: Verdadero o Falso. Nos serán útiles cuando queramos expresar cosas que sólo pueden tener dos estados.
Sin embargo, necesitamos un “sitio” donde colocar dichos valores para que nos seán útiles. Y esto nos lleva a…
La variable.
Para almacenar todos los tipos de datos que se mencionaron más arriba, existe lo que se conoce como variable, una especie de caja con una etiqueta que nos permite tanto guardarla en la memoria como darle un nombre que nosotros podamos recordar. Por ejemplo, si queremos tener un número que represente la edad de alguien, podríamos decir.
edad = 42
Allí creamos una variable de nombre “edad”, en la que colocamos el integer 42. En caso de que queramos especificar un nombre (string), sería así:
nombre = "Cimón Volíbar"
Los valores booleanos (True y False), se escriben tal cual (y con mayúscula al inicio) del mismo modo:
australiano = Falselatinoamericano = True
Cantidades como la estatura, por cierto, estarían mejor representada a través de un float (decimal) que de un integer. La única diferencia es el punto que separa la parte entera de la decimal.
estatura = 1.69
Con los floats, sin embargo, hay que tener especial cuidado con las multiplicaciones y divisiones. Sólo si alguno de los números involucrados es un float entonces el resultado también lo será. Una división de dos integers sólo dará la parte entera. Un caso particular sería:
dos = 5 / 2dosymedio = 5 / 2.0
No es tan difícil de recordar, pero este detalle le ha dado dolores de cabeza hasta a programadores no tan novatos. Conviene no olvidarlo siempre que se quiera trabajar con cantidades decimales.
Y así concluímos con las variables. Éstas son la forma de darle nombres a los datos para poder usarlos en nuestros programas. Sin embargo, necesitamos algo más que nombres. Para empezar, algo que nos permita decidir qué hacer en diferentes situaciones.
Listas y diccionarios.
Si los datos están relacionados de alguna manera, entonces conviene buscar alternativas a las variables sueltas. Por ejemplo, si queremos representar los números del 1 al 10, sería muy incómodo escribir una variable “uno”, otra “dos”, y así. Resulta mucho más sencillo ponerlas todas juntas en una variable especial, que las agrupe a todas:
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Ésta es la que se conoce como lista, y nos permite guardar cualquier cantidad de elementos dentro de ella, conservando su orden. Podemos acceder a cualquiera de sus miembros llamándolos con el nombre de la lista y corchetes:
primero = numeros[0]
El primer elemento siempre será el cero, por lo que para acceder al último valor de la lista tendríamos que usar un 9, no un 10 (en éste caso). Además de las listas también existen diccionarios, que son útiles cuando queremos agrupar datos relacionados entre sí no a través de posiciones, sino de nombres:
alturas = { "juan": 1.79, "ana": 1.62, "godzilla": 252.1 }
Para obtener alguno de los datos, usaríamos entonces su nombre, en vez de su posición:
altura_juan = alturas["juan"]
De este modo, ya podemos poner en memoria listas y diccionarios de datos, pero aún no sabemos cómo recorrerlos. ¿Cómo ver si un elemento está realmente allí, o revisar el contenido automáticamente?. Para poder hacerlo nos hace falta otra técnica, los ciclos.
Ciclos.
A partir de aquí vamos a hacer algo nuevo, ya que necesitaremos escribir varias líneas de código: Usaremos Pastebin para mostrar el código, ya que permite verlo con colores y descargarlo sin dificultad. Volviendo al tema, una de las cosas que las computadoras hacen mejor que cualquier persona es repetir acciones. Mientras que a uno le empezaría a fallar la cordura al tratar de revisar un armario con cientos o miles de gavetas, tu CPU revisará cada elemento de tus listas o diccionarios de lo más tranquilo.
Puedes copiar y pegar el código de antes y los que vienen en un archivo .py y ejecutarlo dándole a F5 en el editor IDLE.
La primera línea en ambos casos (lista y diccionario) los define con algunos elementos ya dentro de ellos, y la siguiente es la forma de agregar datos a cada uno. Posteriormente se puede ver que las palabras for e in sirven para recorrerlos a ambos, pero con algunas diferencias. Mientras que una lista genera sólo una variable, un diccionario necesita dos, separadas por comas antes del in. Aparte de eso, el diccionario requiere de acceder al método iteritems que está en todos los diccionarios. En el próximo tutorial veremos con más detalle ésto. Por ahora, ya podemos crear, aumentar y recorrer listas y diccionarios.
Condicionales.
Lo que se conoce como condicionales es la forma en que el lenguaje te permite saber si se cumplen ciertas condiciones, y qué hacer en caso de que sean o no ciertas. En Python, ésto es manejado por las palabras clave if, elif y else.
La función.
Como te podrás imaginar, manejar un programa grande con miles (o millones) de variables sueltas y repitiendo siempre el mismo código para manejarlas es una tarea que no sólo te resultaría difícil a tí, sino que es imposible para cualquier ser humano. Y fíjate que dije “manejar”, no “crear”… porque ese tipo de código sí logra aparecer en el mundo, y los programadores sarcásticamente lo llaman código spaghetti. Cómo siempre, el artículo en inglés de la Wikipedia es más descriptivo, y también tiene apetitosas fotos de pasta. Pero creeme que nadie siente hambre del infierno que es tratar de comprender el código espagueti. Así que necesitamos algo para evitar que nuestro código caiga en esa mala práctica.
La primera herramienta para evitar el código espagueti es la función. Si la variable es una caja y un nombre, entonces la función vendría siendo una forma de acción, como lo sería abrir varias cajas y usar sus contenidos de cualquier manera. Cuando saludamos al mundo con ésta línea de código:
Allí usamos una de cada una:
print es la acción, y por tanto, la función en sí
“Hola mundo” es el nombre/variable/sustantivo.
Para que la relación entre ellas quede un poco más clara, podemos asignar el mensaje a una variable y luego pasársela a print:
Lo realmente interesante de las funciones, por supuesto, es que podemos crear las nuestras. En Python, el nombre de las funciones se define con la expresión… def, seguida de los nombres con los que usará las variables que necesita encerrados entre paréntesis:
En la función “factorial” podemos ver dos cosas. Lo primero, que sería la presencia de x y n entre paréntesis luego del nombre de la función, son lo que se conoce como argumentos. Son los datos que se le deben dar a la función para que… funcione. Por lo general, una función necesita recibir al menos un argumento para tener algún sentido. Es posible que una función no reciba ningún argumento, pero entonces sus usos son mucho más limitados.
Para continuar.
Si has llegado hasta aquí, entonces ya tienes una idea general sobre cómo se vé python al programar, pero probablemente sientas que faltan muchos detalles. ¿Cómo obtener sólo una parte de una lista?, y cosas similares. Para continuar aprendiendo los detalles, recomiendo una vez más los siguientes libros.
Cómo Pensar en Python
Learn Python the Hard Way
Cualquiera de los dos te servirá para conocer los primeros detalles del lenguaje. En la próxima entrega veremos, sin embargo, algo un poco más práctico. Cómo descargar módulos adicionales para Python. ¡Está en producción!
-
yucazos ha publicado esto

