🐍 Guía de Aula Invertida
vistas

Tipos de Datos en Python

Antes de construir clases y objetos necesitas dominar la materia prima con la que trabaja todo programa: los tipos de datos. Aprende a identificarlos, convertirlos y evitar los errores más comunes al mezclarlos, con ejemplos que puedes editar y ejecutar en vivo.

RC
Ing. Roy Carrasco
Facultad de Ingeniería de Sistemas · UAB

Bienvenido

Todo dato que manejas en un programa —un nombre, una edad, un precio, una condición verdadera o falsa— pertenece a un tipo de dato distinto. Python necesita saber de qué tipo es cada valor para decidir qué operaciones puede hacer con él y cómo almacenarlo en memoria.

Objetivo del módulo

Al finalizar esta guía identificarás los tipos de datos básicos de Python (int, float, bool, str), sabrás comprobarlos con type(), convertirlos con casting y evitar los errores más frecuentes al mezclar tipos distintos.

💻 Código en vivo

Todos los bloques con el encabezado Python son editables: presiona ✏️ Editar para modificar el código y ▶ Ejecutar para correrlo de verdad en tu navegador (usa Pyodide, un Python real compilado a WebAssembly). La primera ejecución tarda unos segundos porque descarga el intérprete.

📖 Aprende

Los tipos básicos y cómo Python los maneja internamente.

💻 Practica

Ejemplos editables y ejecutables en cada sección.

🎯 Domina

Conversión de tipos y los errores que evitan la mayoría de los principiantes.

¿Qué es un tipo de dato?

Un tipo de dato clasifica un valor y define qué operaciones son válidas sobre él. No tiene sentido dividir un texto entre 3, pero sí dividir un número; no tiene sentido poner en mayúsculas un número, pero sí un texto.

TipoEjemploUso típico
int25Contar, indexar, edades, cantidades.
float3.14Precios, promedios, medidas.
str"Hola"Texto, nombres, mensajes.
boolTrue / FalseCondiciones, banderas de estado.
Importante

Aunque en matemáticas 5 y 5.0 son "el mismo número", para Python son tipos distintos (int y float), y esa diferencia puede cambiar el resultado de una operación.

Tipado dinámico en Python

A diferencia de lenguajes como Java o C, en Python no declaras el tipo de una variable: Python lo infiere automáticamente a partir del valor que le asignas, y una misma variable puede cambiar de tipo durante la ejecución del programa.

Python
edad = 20
print(type(edad))

edad = "veinte"
print(type(edad))
No confundir

Que Python sea de tipado dinámico no significa que los tipos no importen: Python sigue siendo fuertemente tipado y verifica los tipos en cada operación. Solo significa que no necesitas declarar el tipo por adelantado.

La función type()

La función incorporada type() te dice exactamente con qué tipo de dato estás trabajando en cualquier momento del programa.

Python
nombre = "Roy"
edad = 30
promedio = 88.5
activo = True

print(type(nombre))
print(type(edad))
print(type(promedio))
print(type(activo))

Salida:

Consola
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
Alternativa más robusta

Para comprobar un tipo dentro de una condición, se prefiere isinstance(valor, int) en lugar de type(valor) == int: isinstance() también reconoce subclases, algo importante cuando trabajes con herencia en POO.

Números enteros (int)

El tipo int representa números enteros, positivos o negativos, sin parte decimal. A diferencia de otros lenguajes, en Python los enteros no tienen un límite de tamaño fijo.

Python
edad = 20
poblacion = 12_000_000
print(edad, poblacion)
print(type(poblacion))
Legibilidad

El guion bajo _ dentro de un número (12_000_000) es solo un separador visual para el programador; Python lo ignora al interpretar el valor.

Los enteros admiten los operadores aritméticos habituales, incluyendo la división entera // y el módulo %:

Python
a = 17
b = 5
print(a + b)
print(a - b)
print(a * b)
print(a // b)
print(a % b)
print(a ** b)
OperadorSignificado
//División entera (descarta la parte decimal).
%Módulo: el resto de la división.
**Potencia.

Números decimales (float)

El tipo float representa números con parte decimal. También admite notación científica usando e.

Python
precio = 19.99
distancia = 2.5e3
print(precio, distancia)
print(type(precio))
Cuidado con la precisión

Los float se almacenan en binario y no siempre pueden representar exactamente un decimal, igual que 1/3 no tiene una representación decimal exacta en base 10. Ejecuta el siguiente bloque:

Python
print(0.1 + 0.2)

El resultado no es exactamente 0.3. Para comparar o mostrar decimales de forma segura, usa round():

Python
resultado = 0.1 + 0.2
print(round(resultado, 2))

Booleanos (bool)

El tipo bool solo tiene dos valores posibles: True o False. Se usa para representar condiciones y es el resultado natural de cualquier comparación.

Python
mayor_edad = True
tiene_deuda = False
print(mayor_edad, tiene_deuda)
print(type(mayor_edad))
Python
print(5 > 3)
print(10 == 10)
print("a" == "b")
Curiosidad

En Python, bool es técnicamente una subclase de int: True equivale a 1 y False a 0. Por eso True + True da 2 sin ningún error.

Cadenas de texto (str)

El tipo str representa texto. Aquí lo vemos solo como parte del panorama general de tipos; si quieres profundizar en indexado, slicing, métodos y formato, revisa la guía dedicada de Strings.

Python
nombre = "Roy Carrasco"
print(nombre)
print(type(nombre))

Conversión de tipos (casting)

Python ofrece funciones para convertir explícitamente un valor de un tipo a otro: int(), float(), str() y bool().

Python
edad_texto = "20"
edad_numero = int(edad_texto)
print(edad_numero, type(edad_numero))

precio = float("19.99")
print(precio, type(precio))

numero = 42
texto = str(numero)
print(texto, type(texto))
ConversiónEjemplo
Texto a enteroint("20")
Texto a decimalfloat("19.99")
Número a textostr(42)
Cualquier valor a booleanobool(valor)
Cuidado

int() no puede convertir directamente un texto con decimales, como "3.5": primero debes pasarlo por float() y luego por int(), es decir, int(float("3.5")).

La conversión a bool() sigue una regla especial: existen valores que Python considera "falsos" (falsy) aunque no sean False explícitamente.

Python
print(bool(0), bool(1))
print(bool(""), bool("hola"))
print(bool([]), bool([1, 2]))
Valores "falsy" (equivalen a False)
0, 0.0, "", None, [], {}, ()

Operaciones con tipos mixtos

Cuando mezclas un int y un float en una operación aritmética, Python "asciende" automáticamente el resultado a float, sin que tengas que convertir nada manualmente.

Python
entero = 5
decimal = 2.5
resultado = entero + decimal
print(resultado, type(resultado))
Lo que Python NO hace automáticamente

Esa conversión automática solo ocurre entre tipos numéricos. Python no convierte números a texto por ti: por eso print("Edad: " + edad) produce un TypeError, como ya viste en la guía de print(). Con +, texto y número nunca se mezclan solos.

Tipos compuestos: una vista previa

Además de los tipos simples, Python tiene tipos que agrupan varios valores a la vez: list, tuple y dict son los más comunes. Aquí solo los presentamos como tipos de dato; los estudiarás en detalle más adelante en el curso.

Python
numeros = [10, 20, 30]
coordenada = (4, 7)
persona = {"nombre": "Roy", "edad": 30}

print(type(numeros))
print(type(coordenada))
print(type(persona))
Por ahora, quédate con esto

Igual que int o str, cada uno de estos tipos compuestos tiene sus propias reglas: si permite duplicados, si se puede modificar después de creado y si mantiene un orden. Los exploraremos con calma en las próximas guías.

Errores comunes

❌ Mezclar str y número con +

"Edad: " + 20 produce TypeError. Usa comas, str() o un f-String.

❌ Convertir texto no numérico

int("veinte") produce ValueError: solo se pueden convertir textos que representen números válidos.

❌ Confundir "5" con 5

"5" == 5 es False: un texto nunca es igual a un número, aunque se "vean" iguales.

Prueba el error

Ejecuta este bloque para observar en vivo el ValueError al convertir un texto no numérico.

Python
edad = int("veinte")
print(edad)
Corrígelo

Edita el bloque anterior y reemplaza "veinte" por un texto que sí represente un número, como "20", para ver la diferencia.

Ejercicios Propuestos

Pon en práctica lo aprendido resolviendo los siguientes ejercicios directamente en el bloque editable.

  1. Declara una variable de cada tipo básico (int, float, str, bool) y usa type() para confirmar cada una.
  2. Convierte el texto "150" a int y súmale 50.
  3. Provoca a propósito un ValueError convirtiendo "hola" a int, y luego corrígelo evitando el error.
  4. Escribe una expresión que mezcle un int y un float, e imprime el resultado junto con su type().
  5. Usa bool() para comprobar si 0, "", "algo" y 5 son verdaderos o falsos.
  6. Declara una lista, una tupla y un diccionario, e imprime el tipo de cada uno con type().
✍️ Resuelve aquí los ejercicios

Reto Final

Escribe un programa que parta de estos dos valores, guardados como texto (simulando datos que llegan de un formulario):

  • precio_texto = "45.90"
  • cantidad_texto = "3"

El programa deberá:

  • Convertir cada valor al tipo numérico correcto.
  • Calcular el total (precio × cantidad).
  • Mostrar el total con dos decimales usando un f-String.
  • Imprimir el type() de cada variable involucrada para confirmar las conversiones.
Salida esperada
Total a pagar: $137.70
<class 'float'>
<class 'int'>
<class 'float'>

Cheat Sheet

UsoEjemplo
Comprobar tipotype(x)
Comprobar tipo (robusto)isinstance(x, int)
Texto a enteroint("5")
Texto a decimalfloat("3.14")
Número a textostr(5)
A booleanobool(x)
Redondear decimalesround(x, 2)

¿Sabías que...?

🔢 Enteros sin límite

A diferencia de C o Java, en Python los int no tienen un tamaño fijo: pueden crecer tanto como lo permita la memoria de tu computadora.

🐍 bool hereda de int

True y False son técnicamente una subclase de int, por eso puedes usarlos en operaciones aritméticas.

📏 El estándar IEEE 754

Los float de Python siguen el mismo estándar binario que casi todos los lenguajes modernos; por eso 0.1 + 0.2 no da exactamente 0.3 en ninguno de ellos.