En este video continuaremos analizando nuestro programa de ejemplo y conoceremos los diferentes tipos de datos que nos ofrece Python.
Si continuamos analizando nuestro programa, veremos la expresión CONDICIONES = {…}. ¿Qué sucede aquí? En esta instancia se está creando nuestra primer variable, aunque para ser más exactos, es -por convención- una constante. Pero ahora, ¿qué son las variables y las constantes?
Una variable es un espacio en memoria que guarda un valor determinado y permite obtener y/o modificar su valor en cualquier instancia del código. Cada variable tiene un nombre, un tipo de dato y un valor.
Una constante es algo similar a una variable, pero está pensado para almacenar valor o valores que no serán modificados.
Si vienes de otro lenguaje de programación, quizás te preguntes ¿qué tipo de dato es esta constante? ¿Por qué si es una constante no se la especifica como tal? No te preocupes, hay respuesta a todo ello.
Si aún lo recuerdas, Python es un lenguaje de tipado dinámico, por lo que no es necesario que especifiques el tipo de dato que almacena una variable y los tipos de datos más importantes de Python son:
Números: Pueden ser enteros (1, 2, 3,…) o flotantes (1.1,
1.2…).
Booleanos: Su valor puede ser únicamente True o False.
Cadenas: Son secuencias de caracteres Unicode, por ejemplo,
una palabra, una frase o un documento HTML, etc.
Listas: Son secuencias de valores ordenados guardados en un
mismo contenedor.
Tuplas: Son secuencias de valores ordenados inmutables
guardados en un mismo contenedor.
Conjuntos: Son “contenedores” de valores sueltos
sin ordenar.
Diccionarios: Son conjuntos sin ordenar en
formato de parejas clave: valor. En los diccionarios es
posible acceder a un valor por su clave.
Demos un repaso a estos tipos de datos.
Números
Python proporciona número enteros y de punto flotante (decimales) pero no existen declaraciones para diferenciarlos; Python los distingue por la presencia del punto decimal.
Para crear una variable en Python, solamente debes indicar su nombre, el signo igual y luego indicar el valor que deseas almacenar, así de simple. Por ejemplo..
>>> PI = 3.14159
>>> type(PI)
<class 'float'>
>>> isinstance(PI, float)
True
>>> radio = 5
>>> type(radio)
<class 'int'>
>>> superficie = (radio ** 2) * PI
Creamos una constante de nombre PI con
valor 3.14159. Aunque en Python, no existen las constantes como tal,
dado a que por definición, las constantes no pueden ser modificadas
luego de la primera asignación, pero por
convención, se
entiende que todas las variables cuyos nombres se encuentran en
mayúsculas, deberían ser constantes.
Luego utilizamos la función type()
que es propia del lenguaje y permite consultar el tipo de dato de un
valor o variable.
Como podemos ver en este caso, la
constante PI es un número flotante.
También podemos utilizar la función
isinstance(),
que permite verificar si un valor o una variable es de un tipo de
dato específico. Al evaluar si PI es un número flotante, devuelve
que es Verdadero.
Por último, creamos la variable
superficie en
la cual se elevamos el valor de radio
al cuadrado con el operador
** y luego lo multiplicamos por la constante PI.
En Python es posible convertir un entero a flotante y un flotante a un entero. Por ejemplo…
>>> int(3.14159)
3
>>> float(5)
5.0
>>> 1.12345678901234567890
1.1234567890123457
>>> type(1000000000000000)
<class 'int'>
Con La función int() convertimos el
valor pasado como parámetro a un entero. En caso de ser un valor
flotante, se trunca -es decir que se omite- la parte decimal.
Al utilizar la función float()
podemos convertir un valor entero a un valor flotante.
Al ingresar un valor con muchos
decimales (más de 15), solo se muestran 15 de ellos, debido a que
la precisión de los números flotantes en Python es de 15
posiciones decimales.
Los enteros en Python 3 no tienen un
límite de tamaño, por lo que no existe el tipo de dato long. Si
quieres mayor detalle. Puedes obtener más detalle de esto en el
PEP237.
Operadores numéricos
Los operadores más sencillos que encontrarás en Python, al igual que en la mayoría de lenguajes de programación son la Suma, Resta, Multiplicación, División, Exponente, División entera y Resto o Módulo. Vemos algunos ejemplos…
>>> 3 + 2.0
5.0
>>> 4 - 7
-3
>>> 2 * 6
12
>>> 3.5 / 2
1.75
>>> 5 ** 2
25
>>> 5.25 // 2
2.0
>>> 5 % 2
1
Si Sumamos un valor entero con un
flotante, dará como resultado un flotante.
Podemos ver que los número enteros
también pueden almacenar números negativos.
Al realizar la operación // devuelve
únicamente la parte entera de la división, pero como un flotante.
El operador % devuelve el resto -o
módulo- de la división realizada.
La historia no termina aquí. En Python puedes utilizar muchos más tipos de datos para operaciones más complejas, como trigonometría, fracciones, etc. Si ese es tu caso, puedes investigar los módulos math y fractions.
Booleanos
Los booleanos sólo poseen dos valores posibles: Verdadero o Falso. Python posee dos constantes para asignar estos valores: True y False.
El tipo de dato bool hereda de los enteros, por lo que pueden tratarse como si fueran números, donde True es 1 y False es 0. De hecho, podemos comprobarlo:
>>> type(True)
<class 'bool'>
>>> isinstance(True, int)
True
Si comprobamos el tipo de datos de
True, indica que es un bool
Pero si evaluamos si True es una
instancia de int, también devolverá True.
Vale aclarar que esto es meramente informativo y utilizar las constantes True y False como enteros está completamente mal visto, nunca lo hagas!
En ciertos lugares (como las sentencias if) no es necesario que evalúes una condición a True, dado a que Python espera por una una expresión que pueda evaluarse a un valor booleano. Estos se llaman “contextos booleanos”. Vale aclarar que cada tipo de dato tiene sus reglas para determinar si un valor equivale a verdadero o falso. Por ejemplo…
>>> valor = 1
>>> valor < 0
False
>>> valor = 0
>>> valor < 0
False
>>> valor = -1
>>> valor < 0
True
Si creamos una variable de valor 1.
Y evaluamos si es menor a cero,
devolverá False.
Si definimos que es cero y volvemos a
evaluar.
Volverá a dar False.
Si definimos que el valor es menos 1 y
volvemos a evaluar
Devolverá True.
En estos ejemplos solo hemos comparado si la variable valor es menor a cero. Más adelante veremos más sobre comparadores lógicos.
Cadenas
En Python también es posible manipular cadenas de texto y pueden ser declaradas de distintas maneras, tanto con comillas simples ‘…’ o con comillas dobles “…”; ambas tienen el mismo resultado. Por ejemplo…
>>> mensaje = "Hola, esto es una cadena"
>>> saludo = 'Hola, esto es otra cadena'
>>> type(mensaje)
<class 'str'>
>>> type(saludo)
<class 'str'>
Creamos una variable mensaje con el
valor “Hola, esto es una cadena” utilizando comillas
dobles.
Luego creamos una variable saludo con
el valor “Hola, esto es otra cadena”, pero utilizando
comillas simples.
Si obtenemos el tipo de dato de ambas
variables, dará el mismo resultado: str.
Para poder utilizar caracteres especiales en las cadenas, como el mismo caracter con el que la creaste o un salto de línea, etc, se utiliza el caracter barra invertida (\). Por ejemplo…
>>> cita = "\"Sí\", le dijo."
>>> print(cita)
"Sí", le dijo.
>>> lineas = "Esto es la linea 1. \nEsto es la linea 2."
>>> print(lineas)
Esto es la linea 1.
Esto es la linea 2.
Creamos la variable cita con dobles
comillas y entrecomillamos la palabra Si.
Si imprimimos el valor, vemos que fue
correcto.
Creamos otra variable línea
utilizando el caracter \n para indicar un salto de línea.
Si imprimimos el valor, vemos que se
creó correctamente.
Si no deseas que los caracteres antepuestos por la barra invertida sean caracteres especiales, puedes usar cadenas crudas, utilizando la letra r antes de la primer comilla. Como por ejemplo…
>>> print(r'C:\algun\nuevo\directorio')
C:\algun\nuevo\directorio
Utilizamos la función print y pasamos una cadena cruda.
El caracter \n es ignorado y se lo considera.
Además, las cadenas pueden ser concatenadas con el operador + y repetidas con *. Por ejemplo…
>>> " sonó" * 3 + ", me llaman del bar de Moe."
' sonó sonó sonó, me llaman del bar de Moe.'
Multiplicamos la cadena “sonó” por 3 y luego sumamos otra
cadena.
Vemos que la salida incluye “sonó” 3 veces.
Las cadenas también pueden ser indexadas, es decir que puedes acceder a una posición específica de ellas comenzando en la posición 0 para el primer caracter. Por ejemplo…
>>> leguaje = "Python"
>>> lenguaje[0]
'P'
>>> lenguaje[-1]
'n'
>>> lenguaje[0:2]
'Py'
Creamos la variable lenguaje con el
valor Python.
Accedemos a la posición cero de la
cadena y observamos que es el primer caracter.
…
Para acceder al último caracter,
puedes utilizar la posición -1.
…
Para obtener una porción de la
cadena, puedes hacerlo indicando la posición inicial, dos puntos y
la posición final, sin incluir la misma.
Hay mucho más cosas que puedes lograr con cadenas, pero hablaremos más de ellos en el siguiente módulo.