Variables y tipos de datos en Python: una introducción práctica
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Imagina que vas a enviar un paquete. Completas una etiqueta que te pide el peso. En lugar de un número, escribes "pesado". El sistema de envíos falla: no puede calcular un precio a partir de la palabra "pesado".
Ese es justo el tipo de problema que resuelven los tipos de datos en programación. Los tipos le dicen a Python si algo es un número, un texto, una respuesta de verdadero o falso, o nada en absoluto. Acertar con esto marca la diferencia entre un código que funciona y uno que explota.
En el tutorial anterior aprendiste a crear variables y a trabajar con cadenas y números. Ahora vamos a ir más a fondo. Conocerás todos los tipos de datos básicos de Python, aprenderás a comprobarlos y a convertir de uno a otro, y evitarás los errores de tipos más comunes.
¿Qué son los tipos de datos en Python?
Un tipo de dato es una etiqueta que le dice a Python qué clase de valor es algo. Determina qué operaciones puedes hacer con ese valor.
Piensa en los utensilios de una cocina. Una taza medidora sirve para líquidos. Una balanza pesa sólidos. No echarías harina en una taza medidora esperando obtener un peso exacto. Cada utensilio está pensado para un tipo de cosa concreto.
Python tiene cinco tipos de datos básicos que usarás a diario:
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'NoneType'>
La función type() es tu mejor aliada cuando trabajas con tipos de datos. Te dice exactamente con qué clase de valor estás tratando. Cuando tu código no funciona, revisar los tipos suele ser la forma más rápida de encontrar el problema.
Cómo funcionan los enteros y los decimales en Python
Python tiene dos tipos de números: los enteros (int), para números sin decimales, y los números decimales (float), para los que sí los tienen. La mayor parte del tiempo no hace falta pensar en la diferencia. Pero a veces importa de verdad.
Cuándo usar enteros y cuándo decimales
Usa enteros cuando algo sea siempre un número entero, como al contar personas, llevar una puntuación o indicar posiciones en una lista. Usa decimales cuando necesites precisión, como al medir la temperatura, calcular porcentajes o trabajar con dinero.
<class 'int'> <class 'float'>
Números grandes más legibles con guiones bajos
Los números grandes son difíciles de leer. ¿1000000 es un millón o diez millones? Python te deja usar guiones bajos como separadores visuales. Python ignora por completo los guiones bajos: están ahí solo para tus ojos.
8000000000 <class 'int'> 1250000.75
El problema de 0.1 + 0.2 en Python
Esto sorprende a casi todo el mundo la primera vez que lo ve. Prueba a ejecutar este código:
0.30000000000000004
Esperabas 0.3, pero obtuviste 0.30000000000000004. No es un error de Python. Todos los lenguajes de programación tienen este problema.
Las computadoras guardan los números en binario (unos y ceros). Algunos números decimales, como 0.1, no se pueden representar con exactitud en binario, igual que 1/3 no se puede escribir con exactitud como número decimal (0.333333... sigue para siempre).
False 0.3 True
Un detalle más, e importante: la división normal (/) siempre produce un float, incluso cuando los dos números son enteros y el resultado es exacto.
5.0 <class 'float'> 5 <class 'int'>
Cómo funcionan los booleanos en Python (True y False)
Un booleano es el tipo de dato más sencillo de Python. Solo puede tener uno de dos valores: True o False. Nada más.
Los booleanos son como interruptores de luz: encendido o apagado, sí o no. Son la base de cada decisión que toma tu código. Cada instrucción if, cada bucle while, cada comparación se reduce a un booleano.
True <class 'bool'> True False True False
¿Qué son los valores truthy y falsy en Python?
En Python, cualquier valor puede tratarse como un booleano. Algunos valores cuentan como True (se les llama "truthy") y otros cuentan como False (se les llama "falsy"). Puedes comprobar cualquier valor pasándoselo a bool().
False False False False False --- True True True True True
Esta es la regla completa de los valores falsy. Apréndetelos de memoria; todo lo demás es truthy:
| Valor falsy | Tipo | Por qué es falsy |
|---|---|---|
False | bool | Es False, literalmente |
0 | int | Cero |
0.0 | float | Cero |
"" | str | Cadena vacía |
None | NoneType | Ausencia de valor |
[] | list | Lista vacía |
{} | dict | Diccionario vacío |
¿Qué es None en Python?
None es la forma que tiene Python de decir "aquí no hay nada". No es cero. No es una cadena vacía. Es la ausencia total de un valor.
Piensa en un formulario con un campo de "segundo nombre". Si alguien lo deja en blanco, no es lo mismo que escribir el número 0 o una cadena vacía "". Esa persona no tiene segundo nombre. Ese campo en blanco es None.
None <class 'NoneType'> False False False
Cómo comprobar si un valor es None en Python
Para comprobar si algo es None, usa siempre is None o is not None. No uses ==. Es una convención de Python con una razón técnica real detrás.
value = None
if value == None:
print("No value")value = None
if value is None:
print("No value")Hello, stranger! Hello, Alice!
Verás None como valor predeterminado en funciones todo el tiempo. Es una forma limpia de decir "este argumento es opcional".
Cómo comprobar el tipo de una variable en Python
Python te da dos herramientas para comprobar tipos: type() e isinstance(). Se parecen, pero sirven para cosas distintas.
Usar type() para identificar un valor
type() te dice el tipo exacto de un valor. Es ideal para depurar: cuando algo no funciona, revisar el tipo suele revelar el problema al momento.
<class 'int'> <class 'float'> <class 'str'> <class 'bool'> <class 'NoneType'> True False
Usar isinstance() para comprobar tipos
isinstance() comprueba si un valor es de un tipo determinado (o de uno entre varios tipos). Es la forma preferida de comprobar tipos en código real, porque funciona con la herencia y se lee mejor.
True True False True True False
Un dato curioso: en Python, los booleanos son en realidad una subclase de los enteros. En secreto, True es 1 y False es 0.
True True 2 10 42
Cómo convertir entre tipos en Python
A veces tienes un valor de un tipo, pero lo necesitas en otro. Un usuario escribe su edad en un formulario: llega como la cadena "25", pero para hacer cálculos necesitas el entero 25. Python te ofrece funciones integradas para convertir entre tipos.
Convertir con int(), float(), str() y bool()
30 19.98 Your score: 100 42.0 3
Trampas habituales al convertir tipos
No todas las conversiones funcionan. Python falla con un ValueError si intentas convertir algo que no tiene sentido.
42 3.14 100 Error: invalid literal for int() with base 10: 'hello' Error: invalid literal for int() with base 10: '3.14' 3
Convertir con bool() sigue las reglas de truthy y falsy que vimos antes:
True False True False False True
Asignación de variables en Python: asignación múltiple e intercambio
Python tiene algunos atajos prácticos para trabajar con variables que la mayoría de los otros lenguajes no tienen. No son trucos ingeniosos sin más: los desarrolladores profesionales los usan todos los días.
Asignación múltiple en una sola línea
Puedes asignar valores a varias variables en una sola línea. Es especialmente cómodo cuando tienes un grupo de valores relacionados.
10 20 30 Alice Smith, age 25 0 0 0
Intercambiar variables sin una variable temporal
En la mayoría de los lenguajes, para intercambiar dos variables hace falta una variable temporal. Python tiene una forma más limpia.
a = 1
b = 2
# Need a third variable to hold the value
temp = a
a = b
b = temp
print(a, b) # 2 1a = 1
b = 2
# Python handles the swap in one step
a, b = b, a
print(a, b) # 2 1La línea a, b = b, a funciona porque Python evalúa primero todo el lado derecho (b, a se convierte en 2, 1) y luego asigna esos valores al lado izquierdo. No hace falta ninguna variable temporal.
Ejercicios de práctica
¡Es hora de poner a prueba lo que sabes! Estos ejercicios cubren todo lo que viste en este tutorial. Van del más fácil al más difícil.
Recuerda: atascarse también es aprender. Intenta cada ejercicio antes de mirar las pistas. Lee los mensajes de error con atención: suelen decirte exactamente qué salió mal.
Crea una variable de cada tipo básico de Python e imprime su tipo. Tu salida debe ser exactamente:
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
<class 'NoneType'>Puedes darles a las variables el nombre y el valor que quieras, siempre que los tipos coincidan.
Convierte una temperatura de grados Fahrenheit a Celsius.
La fórmula es: **Celsius = (Fahrenheit - 32) * 5 / 9**
Tienes una variable fahrenheit con el valor 98.6. Calcula su equivalente en Celsius e imprime el resultado exactamente en este formato:
98.6F = 37.0CSin ejecutar el código, predice qué imprimirá cada línea. Luego ejecútalo para comprobar tus respuestas.
Escribe tus predicciones como comentarios y después pulsa Ejecutar para verificarlas.
Este código debería imprimir un resumen del perfil de un usuario, pero falla con un TypeError. Corrige el código para que imprima:
Name: Alice
Age: 25
Height: 5.6 feetPuedes corregirlo como prefieras (f-strings, conversión con str(), etc.).
Tienes dos variables: a = 10 y b = 20. Intercambia sus valores sin usar una variable temporal y luego imprime las dos.
Salida esperada:
a = 20
b = 10Tienes una cadena price_text que contiene "49" y un entero quantity con el valor 3.
1. Convierte price_text en un entero
2. Calcula el total (el precio por la cantidad)
3. Imprime el resultado exactamente en este formato:
3 items at $49 each = $147 totalDebes usar las variables originales: no escribas los números a mano dentro del print.
Resumen: variables y tipos de datos en Python
Esta es una referencia rápida de todo lo que aprendiste en este tutorial:
| Tipo | Ejemplo | Qué guarda |
|---|---|---|
int | 42, -7, 1_000 | Números enteros |
float | 3.14, 0.0, -2.5 | Números decimales |
str | "hello", 'world' | Texto |
bool | True, False | Valores de sí o no |
None | None | Ausencia de valor |
Herramientas clave:
| Herramienta | Para qué sirve | Ejemplo |
|---|---|---|
type(x) | Ver de qué tipo es x | type(42) → <class 'int'> |
isinstance(x, int) | Comprobar si x es de un tipo concreto | isinstance(42, int) → True |
int(), float(), str() | Convertir entre tipos | int("42") → 42 |
bool() | Comprobar si algo es truthy o falsy | bool("") → False |
a, b = 1, 2 | Asignación múltiple | Asigna varias variables a la vez |
a, b = b, a | Intercambiar valores | Sin variable temporal |
¿Qué sigue?
En el próximo tutorial, [Números y matemáticas](/python/numbers-and-math), profundizarás en el sistema numérico de Python. Conocerás el módulo math, distintas formas de redondear, cómo dar formato a los números y cómo escribir programas que hagan cálculos como un profesional.