Tipos de dato

Todos los lenguajes de programación más o menos convencionales nos permiten almacenar datos en la memoria del sistema, y ello a través de una suerte de "cajas" en donde guardamos información. Estas cajas las llamamos comúnmente variables. Pero una de las diferencias fundamentales entre un lenguaje u otro es el modo en que maneja esas variables. De algunos decimos que son estáticos, por cuanto una caja solamente puede almacenar datos de un tipo en particular; mientras que de otros se dice que son dinámicos, cuando una misma variable puede contener un número al comienzo del programa y luego albergar una cadena de caracteres, por ejemplo.

Según esta clasificación, diremos que Python es un lenguaje dinámico. No obstante, la forma en la que entiende las "variables" es un tanto diferente respecto de otros lenguajes. En lugar de concebirlas como "cajas", las entiende como nombres o referencias. Por ello, en lugar de "variable" generalmente se emplea el término objeto (aunque bien las utilizaremos de forma indistinta en el presente tutorial). De cualquier forma, no constituye una cuestión fundamental para este curso introductorio. Para profundizar, véase Diferencia entre variables en Python y otros lenguajes.

Tipos básicos

Hechas las presentaciones, ya es hora de crear nuestro primer objeto. Python no distingue la creación de la asignación. Un objeto es creado automáticamente cuando le asignamos un valor. Así, para crear el objeto a con el valor 1 simplemente haremos lo siguiente.

>>> a = 1

¡Perfecto! Y dado que la creación ocurre de forma implícita en la asignación, tampoco es necesario indicar el tipo de dato que contendrá el objeto pues es inferido por Python.

En la consola interactiva, podemos escribir el nombre de un objeto para ver su valor.

>>> a
1

Para conocer de qué tipo es un objeto, empleamos la función incorporada (recuerda, aquellas que están definidas por Python) type().

>>> type(a)
<class 'int'>

Como vemos, nuestro objeto es del tipo int: esto es, un número entero. Los otros tres tipos de dato básicos son los números de coma flotante (float), los booleanos (bool) y las cadenas de caracteres (str).

>>> pi = 3.14
>>> type(pi)
<class 'float'>
>>> prendido = True
>>> type(prendido)
<class 'bool'>
>>> s = "¡Hola, mundo!"
>>> type(s)
<class 'str'>

Nótese que los nombres de las variables se escriben en letras minúsculas y separadas por guiones bajos.

Los valores posibles para un booleano son True y False. Estas dos palabras están reservadas por el lenguaje, lo que quiere decir que no podemos definir objetos con esos nombres.

Volveremos sobre el resto de los tipos de dato más adelane. Ahora me interesa que nos enfoquemos en los números enteros y de coma flotante.

Operaciones aritméticas y de comparación

Las operaciones aritméticas son la suma, la resta, la multiplicación y la división. Los operadores utilizados son similares a los de otros lenguajes de programación.

>>> a = 5
>>> b = 7
>>> a + b
12
>>> a - b
-2
>>> a * b
35
>>> a / b
0.7142857142857143

Todas estas operaciones son expresiones, es decir, sentencias de código que devuelven un resultado. Cuando escribimos una expresión en la consola interactiva, lo que resulta de ello es impreso en la pantalla.

A estas cuatro podemos añadir la división integral y el resto.

# División integral: siempre retorna un número entero.
>>> 10 // 3
3
# Resto o módulo: retorna el remanente de la división 16 / 5.
>>> 16 % 5
1

Ahora bien, en cuanto a comparación de números se refiere, contamos con los operadores > (mayor), >= (mayor o igual), < (menor) y <= (menor o igual). Las operaciones de comparación siempre retornan un booleano.

>>> 10 > 5
True
>>> 10 < 5
False
>>> 6 >= 5
True
>>> 4 <= 2
False

Para saber si el valor de dos objetos es igual o distinto, empleamos los operadores == y !=.

>>> 5 == 2
False
>>> "Hola mundo!" != 3.14
True

Como habrás observado, no es necesario que los objetos que conforman una comparación sean del mismo tipo de dato.

Ahora que ya sabemos cómo crear objetos o variables y cómo compararlos, tenemos el pie para hablar sobre el control del flujo de un programa.