Tipos de datos simples¶
Variables¶
Una variable es una etiqueta que le ponemos a un dato o valor para identificarle.
1 2 |
|
En el ejemplo, guardamos la cadena de texto en una variable llamada mensaje
. El operador =
almacena el valor de la derecha en la variable de la izquierda. A partir de ese momento, al utilizar el nombre de la variable en cualquier lugar del código, estaremos indicando que realmente queremos utilizar el valor o dato que contiene (o al que apunta si pensamos en una variable como una etiqueta).
Nombrar variables¶
A la hora de nombrar variables existen algunas reglas de obligado cumplimiento:
-
Los nombres de variables solamente pueden contener letras, números y guiones bajos. Pueden empezar con una letra o un guión bajo pero no pueden empezar por un número.
-
No se pueden utilizar como nombres de variables palabras claves de Python o nombres de funciones (palabras reservadas).
También existen algunas recomendaciones que es importante seguir:
-
Utilizar nombres de variables en minúsculas.
-
Cuando el nombre de una variable esté formado por varias palabras, separar estas por un guión bajo.
-
Los nombres de las variables deben ser cortos y descriptivos evitando en lo posible el uso de abreviaturas.
Tipo de una variable¶
Podemos consultar cual es el tipo almacenado en una variable con la función type(variable)
.
1 2 3 4 5 6 |
|
Resultado:
<class 'int'>
<class 'float'>
<class 'str'>
Tipo String¶
Un string
es una serie ordenada de caracteres (letras, números y/o signos de puntuación). Para indicar que un valor es un string utilizaremos comillas dobles o comillas simples para delimitarlo.
1 2 |
|
Resultado:
Esto es un string
Esto también es un string
Un string puede no contener ningún carácter y estar vacio, por ejemplo: nombre = ""
.
Podemos utilizar comillas triples para crear strings que ocupen múltiples líneas.
1 2 3 4 |
|
Resultado:
Esto es un
texto que
ocupa tres líneas
Podemos concatenar strings con el operador +
. Podemos obtener la longitud de un string con la función len(variable)
. Podemos acceder a un caracter de un string a través de su índice utilizando corchetes variable[i]
. Hay que tener presente que se empieza a contar por 0 luego el primer caracter está en la posición cero.
1 2 3 4 5 6 |
|
Resultado:
PayPal
6
y
Podemos utilizar el operador *
para repetir un string varias veces.
1 2 |
|
Resultado:
*******
YesYesYesYesYes
Con los operadores "igual a" ==
y "distinto de" !=
podemos comparar si dos datos de tipo string son iguales. Dependiendo de si se cumple o no la condición, obtendremos un True
o un False
. En las comparaciones hay que tener presente que las letras máyusculas son diferentes que las minúsculas.
1 2 3 4 |
|
Resultado:
True
False
True
False
Métodos disponibles¶
Una variable que contiene un tipo de dato string
tiene disponibles una serie de métodos a los que podemos acceder escribiendo el nombre de la variable, un punto, el nombre del método y unos paréntesis (que solo contendran datos en su interior cuando el método específico lo requiera).
1 2 |
|
En el ejemplo, el método upper devuelve el texto contenido en la variable mensaje en mayúsculas.
Resultado:
HOLA MUNDO!
Algunas de los métodos que podemos utilizar con una variable string llamada a
son los siguientes:
-
a.upper()
Devuelve el texto en mayúsculas. -
a.lower()
Devuelve el texto en minúsculas. -
a.title()
Devuelve el texto en minúsculas con la primera letra de cada palabra en mayúsculas. -
a.isnumeric()
DevuelveTrue
si el valor es un número, en otro caso devuelveFalse
. -
a.rstrip()
Elimina espacios en blanco (incluyendo tabulaciones y saltos de línea) de la derecha de un string. -
a.lstrip()
Elimina espacios en blanco (incluyendo tabulaciones y saltos de línea) de la izquierda de un string. -
a.strip()
Elimina espacios en blanco (incluyendo tabulaciones y saltos de línea) de ambos lados de un string. -
a.split(caracter)
Divide el string en varios trozos. Para ello utiliza el "caracter que le pasamos como separador." -
a.count(texto)
Cuenta cuantas veces "texto" esta contenido en el string. Texto es también un string. -
a.replace(texto1, texto2)
Reemplaza en el string texto1 por texto2. -
a.find(texto)
Obtiene el índice de la primera ocurrencia del "texto" en el string. Si no lo encuentra devuelve -1.
Veamos un ejemplo de algunos de ellos:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Resultado:
SUN GOES DOWN.
sun goes down.
Sun Goes Down.
False
16
Sun goes down.
['Sun', 'goes', 'down.']
2
Sun goes up.
4
Una relación más exhaustiva de todos los métodos del tipo string se puede consultar aquí.
Formato usando variables¶
Para poder utilizar variables dentro de un string, colocaremos la letra f
justo antes de las comillas iniciales que lo delimitan. De esta forma podremos incluir nombres de variables en el string ubicándolas entre llaves. Python sustituirá el nombre de la variable por el valor almacenado en ella a la hora de evaluar el string. Veamos un ejemplo:
1 2 3 |
|
Resultado:
Al Pacino es un gran actor
A este tipo de strings se les llama strings con formato o f-strings. Fueron introducidos por primera vez en la versión 3.6 de Python. En versiones anteriores no funcionan y era necesario utilizar la función format
de la siguiente manera:
1 |
|
Entre las llaves y después del nombre de la variable podemos añadir el carácter :
y, a continuación, indicar cuantas posiciones deseamos que ocupe nuestro dato y si queremos alinearlo a la derecha, a la izquierda o en el centro. Esto es muy útil para representar datos en formato de tabla.
1 2 3 4 |
|
Resultado:
Dato|128 |
Dato| 128|
Dato| 128 |
Si es un número, incluyendo una "coma" después de los "dos puntos" podemos indicar que deseamos incluir separadores de miles. Si incluimos un "punto" y un valor numérico indicamos el número de decimales que queremos. Incluyendo una "f", un "%" o una "e" indicamos si lo deseamos expresar como un número, en tanto por ciento o en notación científica respectivamente.
1 2 3 4 |
|
Resultado:
130,500.125
130500.12
1.31e+05
También es posible incluir valores dentro de un string utilizando el símbolo especial %
. Este símbolo actua como un comodín que posteriormente será sustituido por el valor indicado. El símbolo %
actua como un prefijo para otro carácter que define el tipo de valor que se desea insertar.
1 2 3 |
|
Resultado:
Hola Miguel, tus puntos son 875 de 1000.
En el ejemplo aparece un string que contiene tres comodines (%s, %i, %i
). El primero indica que se insertará un dato de tipo string, los dos siguientes indican que se insertarán números enteros. Separado del string por el carácter %
se indican los tres valores que deben de sustituir cada comodín, por orden. Los dos primeros son variables y el tercero es un valor numérico literal.
Plantillas usando variables¶
Otra alternativa para formatear strings no tan habitual es la utilización de plantillas (Templates). Fueron introducidas en Python 2.4 como una forma sencilla de proporcionar formato. Para utilizarlas hay que importar la librería string
. Veamos un ejemplo:
1 2 3 4 5 6 7 8 |
|
Resultado:
Miguel ha guardado 7 veces
Lucia ha formateado 2 veces
Luis ha borrado 4 veces
Se crea la plantilla con el método Template
de la clase string
. A ese método se le pasa un string que contiene comodines (variables que comienzan con el carácter $
). Luego, utilizando el método substitute
de la plantilla creada podemos sustituir los comodines por los valores que queramos. También es posible enviar al método substitute
un diccionario que contiene dentro los pares clave/valor
correspondientes.
Secuencias de escape¶
Existen ciertos caracteres especiales que no tienen una representación directa mediante un símbolo como, por ejemplo, una tabulación o un salto de línea. Para poder incluir estos caracteres en un string utilizaremos una barra inclinada seguida de una letra (a esto lo denominamos secuencia de escape). Dado que la barra inclinada sirve para iniciar una secuencia de escape, cuando queramos incluir el carácter barra inclinada en un string utilizaremos la secuencia de escape \\
(doble barra inclinada).
Las secuencias de escape más habituales son:
Secuencia | Nombre |
---|---|
\t | Tabulación |
\n | Salto de línea |
\r | Retorno de carro |
\ | Barra inclinada |
\' | Comilla simple |
\" | Comilla doble |
\xhh | Caracter con valor hexadecimal hh |
1 |
|
Resultado:
Hola,
necesito
~ Una palanca
~ Un punto de apoyo
Tipos numéricos¶
Podemos manejar tres tipos básicos de datos numéricos: número enteros (integer), números reales (float) y números complejos. Para los números reales utilizaremos el punto decimal a la hora de escribir valores literales en nuestro programa.
Operadores comunes¶
Los operadores más comunes son los siguientes:
Operador | Nombre |
---|---|
+ | Suma |
- | Resta |
* | Multiplicación |
/ | División |
// | División entera |
% | Módulo |
** | Exponente |
Cuando en una operación solo intervienen enteros, el resultado es un número entero salvo que sea una división en cuyo caso será un numero real (salvo que el operador sea la división entera). Cuando en una operación intervienen enteros y reales el resultado siempre es un número real.
Veamos algunos ejemplos:
1 2 3 4 5 6 7 8 9 10 11 |
|
Resultado:
11
7
18
4.5
4
81
1
0.30000000000000004
Cabe destacar que, en ocasiones, por la forma en que se representan internamente los datos reales ocurren efectos como el que podemos apreciar en la última operación del ejemplo anterior.
Cuando en una expresión intervengan múltiples operandos y operadores y tengamos dudas sobre que operadores se ejecutan antes que otros podemos utilizar paréntesis para definir claramente que orden de ejecución necesitamos. Una regla útil es que la multiplicación y la división se ejecutan antes que la suma y la resta.
1 2 |
|
Resultado:
7.0
6.0
Asignación¶
El operador de asignación =
asigna el valor de su derecha a la variable de su izquierda. Existen otros operadores compuestos que simplifican operaciones de asignación. Por ejemplo, para sumar 1 al valor de una variable es común utilizar la siguiente expresión: x = x + 1
. Esa misma expresión se puede escribir con un operador de asignación compuesto así: x += 1
. Veamos una tabla con algunos de los operadores de asignación compuestos.
Suponiendo x = 10
:
Operador | Ejemplo | Equivalente | Resultado |
---|---|---|---|
+= | x += 2 | x = x + 2 | 12 |
-= | x -= 2 | x = x - 2 | 8 |
/= | x /= 2 | x = x / 2 | 5.0 |
//= | x //= 2 | x = x // 2 | 5 |
%= | x %= 2 | x = x % 2 | 0 |
Asignación múltiple¶
Es posible asignar valores a más de una variable en la misma línea utilizando el operador =
.
1 |
|
Números largos¶
Cuando escribimos números muy largos se pueden utilizar guiones bajos para separar los grupos de miles y así hacer el número más legible. Esto no afecta al valor del dato, solamente es una cuestión estética.
1 2 3 |
|
Resultado: 8.478260869565217
Constantes¶
Una constante es como una variable pero su valor no debe cambiar durante la ejecución de un programa. Python no tiene soporte nativo para constantes. Aún así, los programadores usan letras mayúsculas para indicar que una variable se debe tratar como una constante.
1 |
|
Números complejos¶
Los números complejos están formados por la suma de dos términos a + bi
. El primer término es la parte real y el segundo es la parte imaginaria que consiste en un número real multiplicado por el valor de i (raiz cuadrada de -1). Python utiliza la letra j
para representar la parte imaginaria de un número complejo. Veamos un ejemplo:
1 2 3 4 5 |
|
Resultado:
<class 'complex'>
3.0
2.0
(3+2j)
Conversión de tipos¶
Para convertir un dato a otro tipo utilizaremos las siguientes funciones:
Función | Conversión |
---|---|
str | Convierte a string |
int | Convierte a entero |
float | Convierte a float |
complex | Convierte a complejo |
bool | Convierte a booleano |
1 2 3 4 5 |
|
Resultado:
<class 'str'>
<class 'float'>
1.0
Tipo Booleano¶
Un tipo de dato booleano solo puede tener dos valores: True
o False
. Podemos convertir enteros a booleanos siendo 0 False
y 1 True
. También podemos convertir strings siempre que los valores que contengan sean "True" y "False".
1 2 3 4 5 |
|
Resultado:
<class 'bool'>
True
1
False
El tipo None¶
Python tiene un tipo especial denominado NoneType
que solo admite un valor: None
. Se utiliza para representar valores nulos o, visto de otra forma, la ausencia de valor. Podemos utilizarlo para crear una variable cuando aún no tenemos un valor para ella.
Podemos consultar cuando una variable contiene el valor None
con las expresiones variable is None
o variable is not None
.
1 2 3 4 5 |
|
Resultado:
usuario: None
tipo: <class 'NoneType'>
usuario es nulo: True
usuario no es nulo: False
Pedir datos por Consola¶
La función input
permite pedir datos al usuario por Consola.
Ejecutar 'input' en Sublime Text
Si estamos ejecutando nuestros programas desde Sublime Text la función input
no funcionará por defecto. Deberemos ejecutar el programa directamente desde la Consola de Windows con el comando python nombre_archivo.py
. Otra opción es instalar un paquete de Sublime Text llamado SublimeREPL siguiendo las instrucciones de esta página. Un vez instalado, ya podremos ejecutar programas que hagan uso de input
desde el menú Tools > SublimeREPL > Python > Python - RUN current file
.
Podemos pasar a input
un argumento que contenga el mensaje que deseamos mostrar al usuario para pedir el dato. La función input
devuelve siempre un dato de tipo string. Si queremos tratarlo como un número para operar con el tendremos que realizar una conversión al tipo correspondiente con las funciones int
o float
.
1 2 3 4 5 6 |
|
Resultado:
¿Como te llamas? Jason
¿Cuantos años tienes? 53
¿Cuanto pesas (en kg)? 84
¿Cuanto mides (en m)? 1.78
Hola Jason. Tu indice de masa corporal es de 26.51