Conversión de tipos en Python: cómo pasar de un tipo a otro
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Imagina que le preguntas a alguien su edad y te la escribe en una nota adhesiva. Ahora tienes el texto "25", pero no puedes hacer cuentas con una nota adhesiva. Primero tienes que leer el texto y convertirlo en tu cabeza en un número de verdad.
Python funciona igual. Muchas veces los datos llegan con un tipo, pero los necesitas en otro. Un usuario escribe "42" en un formulario: eso es una cadena de texto, no un número. Antes de poder sumarlo, restarlo o compararlo, tienes que convertirlo.
Este tutorial te enseña a convertir entre los tipos de datos de Python con seguridad y confianza. Aprenderás qué conversiones ocurren automáticamente, cuáles tienes que hacer tú y cómo evitar los errores que hacen tropezar a los principiantes.
¿Qué es la conversión de tipos en Python?
La conversión de tipos consiste en cambiar un valor de un tipo de dato a otro. Por ejemplo, convertir la cadena "42" en el entero 42, o convertir el entero 10 en el número decimal (float) 10.0.
Python tiene dos clases de conversión de tipos. La conversión implícita ocurre automáticamente: Python la hace por ti sin que lo veas. La conversión explícita es cuando usas una función como int() o str() para convertir un valor tú mismo.
Piensa en la conversión implícita como el autocorrector de tu teléfono cuando cambia una palabra. La conversión explícita es como corregir la palabra tú mismo, a mano. Las dos hacen el trabajo, pero a mano tienes más control.
7.0 <class 'float'> 30
Cómo funciona la conversión de tipos implícita en Python
Cuando mezclas un entero y un float en una operación matemática, Python convierte automáticamente el entero en float. Esto se llama conversión implícita (o coerción de tipos). Python siempre convierte al tipo más "amplio" para que no se pierdan datos.
Es como pasar agua de un vaso pequeño a una jarra grande. El agua (tus datos) sigue siendo la misma; solo que ahora está en un recipiente más grande. Pasar de int a float es seguro porque un float puede guardar cualquier valor entero.
7.0 15.0 5.0 6 10 3.5
7.0 Error: can only concatenate str (not "int") to str
Cómo convertir a entero con int()
La función int() convierte un valor en un entero. Puedes convertir floats, cadenas y booleanos. Cada tipo se comporta de forma un poco distinta.
Convertir floats en enteros
Cuando conviertes un float en un entero, Python trunca: corta todo lo que hay después del punto decimal. No redondea. Piensa en cortar una cuerda: lo que sobra después de la marca, se pierde.
3 3 -2 99 4 3
Convertir cadenas en enteros
Solo puedes convertir una cadena en un entero si contiene un número entero válido. Los espacios alrededor del número no molestan, pero un punto decimal o cualquier letra provocarán un error.
42 -7 100 1 0
Cómo convertir a float con float()
La función float() convierte un valor en un número decimal (float). Acepta enteros, cadenas y booleanos.
Convertir un entero en float siempre es seguro. No se pierde nada: el número solo gana un .0 al final. Es como agregar decimales a un precio: $5 pasa a ser $5.00.
42.0 -7.0 0.0 3.14 7.0 -2.5 1.0 0.0
Cómo convertir a cadena con str()
La función str() convierte cualquier valor en su representación como cadena. Es la función de conversión más tolerante: funciona con casi todo.
Usarás str() sobre todo al construir mensajes que mezclan texto y números. Python no te deja pegar una cadena y un número con +, así que primero conviertes el número en cadena.
42 3.14 -7 True False None I am 25 years old
name = "Alice"
age = 25
print("Name: " + name + ", Age: " + str(age))name = "Alice"
age = 25
print(f"Name: {name}, Age: {age}")Cómo convertir a booleano con bool()
La función bool() convierte un valor en True o False. La regla es sencilla: los valores vacíos y el cero son `False`; todo lo demás es `True`.
Piensa en ello como preguntar "¿hay algo aquí?". Una caja vacía es False. Una caja con algo dentro, aunque sea un papel arrugado, es True.
False False False False --- True True True True True
True True True True False
Errores comunes de conversión de tipos en Python
No todas las conversiones son posibles. Cuando Python no puede convertir un valor, lanza un ValueError. Es el error más común con el que se topan los principiantes al convertir tipos.
Es como intentar traducir una palabra que no existe en el otro idioma. Python mira el valor, intenta convertirlo y te dice: "No tengo ni idea de cómo convertir esto en un número".
Error 1: invalid literal for int() with base 10: 'hello' Error 2: invalid literal for int() with base 10: '3.14' Error 3: could not convert string to float: 'abc'
Aquí tienes una referencia rápida de lo que funciona y lo que no:
| Conversión | Ejemplo | Resultado |
|---|---|---|
int("42") | Cadena de dígitos | 42 |
int("3.14") | Cadena con decimales | ValueError |
int("hello") | Cadena no numérica | ValueError |
float("3.14") | Cadena con decimales | 3.14 |
float("abc") | Cadena no numérica | ValueError |
int(float("3.14")) | Conversión en dos pasos | 3 |
Cómo convertir tipos de forma segura en Python
En los programas reales, a menudo recibes datos de usuarios o de archivos. No siempre puedes confiar en que esos datos sean un número válido. Si llamas a int() con una entrada incorrecta sin más, tu programa falla.
Python te da dos formas de manejar esto con seguridad. Puedes comprobar antes de convertir con métodos como .isdigit(), o puedes intentarlo y capturar el error con try/except.
Comprobar primero con .isdigit()
El método .isdigit() devuelve True si todos los caracteres de una cadena son dígitos. Es una forma rápida de comprobar si una cadena se puede convertir en entero sin riesgo.
True False False False False Converted: 42
Usar try/except para convertir con seguridad
El patrón try/except es la forma más flexible de manejar conversiones. Intentas la conversión y, si falla, capturas el error y haces otra cosa. Aprenderás try/except a fondo más adelante; por ahora, este es el patrón básico.
42 100 None None None
Ejercicios de práctica
Es hora de poner a prueba lo que sabes sobre conversión de tipos. Estos ejercicios empiezan fáciles y van subiendo de nivel. Intenta resolver cada uno antes de mirar las pistas.
Tienes una variable de cadena text que contiene "42". Conviértela en un entero y multiplícala por 2. Imprime el resultado.
Salida esperada:
84Tienes un float price = 9.99. Conviértelo en un entero e imprime el valor original y el convertido para mostrar qué se pierde.
Salida esperada:
Original: 9.99
Converted: 9
Lost: 0.99Pista: calcula lo que se perdió con una resta. Usa round() con la cantidad perdida para evitar las rarezas de los números decimales.
Sin ejecutar el código, predice qué imprimirá cada línea. Escribe tus predicciones como comentarios y luego ejecútalo para comprobarlo.
Piensa bien en el truncamiento, la conversión a cadena y en qué valores cuentan como verdaderos o falsos.
Este código intenta construir un mensaje, pero falla con un TypeError. Corrígelo para que imprima:
You have 3 new messagesPuedes corregirlo como prefieras (str(), f-strings, etc.).
Escribe código que compruebe tres cadenas con .isdigit() y las convierta en enteros solo si es seguro. Para cada cadena, imprime el número convertido o "Not a number".
Datos:
values = ["42", "hello", "100"]Salida esperada:
42
Not a number
100Resumen: conversión de tipos en Python
Esto es todo lo que aprendiste sobre la conversión de tipos:
| Función | Qué hace | Ejemplo |
|---|---|---|
int() | Convierte a entero (trunca los floats) | int("42") → 42 |
float() | Convierte a float | float("3.14") → 3.14 |
str() | Convierte a cadena | str(42) → "42" |
bool() | Convierte a booleano | bool(0) → False |
Reglas clave que debes recordar:
bool → int → float)round() para redondearfloat(): int(float("3.14"))¿Qué sigue?
Ahora que sabes convertir entre tipos de datos, tienes una habilidad esencial para procesar lo que escribe el usuario y crear programas reales. En el próximo tutorial aprenderás a escribir código Python limpio y legible, de ese que otros programadores (y tu yo del futuro) te agradecerán.