Pregunta 1Dado age = 30, ¿qué ocurre cuando ejecutas "I am " + age + " years old"?
Conversión entre números y cadenas
Este artículo forma parte del Curso de Python, con el que dominarás desde cero las habilidades necesarias para usar Python, desde lo básico hasta lo avanzado.
Conversión de tipos en Python a partir del clásico error de no poder sumar "25" y 25. Pasa de número a cadena con str(), de entrada a número con int() / float() y evita el ValueError de int("3.14").
Por qué importa la conversión de tipo
En Python no puedes simplemente sumar o comparar valores de tipos distintos tal cual.
El caso clásico es la mezcla de números (int / float) y cadenas (str). Por ejemplo, "25" a primera vista parece el número 25, pero para Python son solo dos caracteres puestos uno al lado del otro y no se pueden usar en operaciones aritméticas.
Aquí es donde entra la conversión de tipo (casting) para igualar los tipos. Una vez que dominas str() / int() / float(), puedes convertir libremente entre números y cadenas.
Número → Cadena (str())
Cuando pasas un número a str(), obtienes una cadena que representa ese número.
Ya sea un int, un float o un bool, str() convierte casi cualquier cosa en una forma de cadena legible por humanos.
Pasas del número en sí a su representación como cadena.
Piénsalo como una preparación previa antes de unir (+) valores en una frase.
age = 25
temp = -20.5
# Número -> Cadena
print(str(age)) # '25'
print(type(str(age))) # <class 'str'>
# Una vez que es cadena, + puede unirla
print("Edad: " + str(age) + " años") # Edad: 25 años
print("Temperatura actual: " + str(temp) + " grados") # Temperatura actual: -20.5 grados
Cuándo usar f-strings en su lugar
Dentro de un f-string (f"Edad: {age} años"), los valores se convierten automáticamente a str, así que no necesitas llamar a str() tú mismo. str() brilla cuando construyes cadenas con + o .join(), o cuando quieres fijar algo como cadena: nombres de archivos, líneas de log, claves JSON y similares.
Cadena → Número (int() / float())
Para la dirección contraria, usa int() y float(). Aunque un valor parezca una cadena, mientras su contenido sea un número, puedes convertirlo y usarlo en cálculos.
Cosas como la entrada del usuario, las columnas de CSV y las respuestas de API suelen llegar como str, así que convertirlas a números es algo que harás mucho.
Usa int() cuando quieras un entero, y float() cuando quieras permitir decimales.
int("3.14") falla: no puede hacer esa conversión.
quantity = "12"
price = "198.5"
# Cadena -> int
q = int(quantity)
print(q + 3) # 15 (funciona como número)
# Cadena -> float
p = float(price)
print(p * q) # 2382.0 (es float, por eso tiene .0)
print(type(q), type(p)) # <class 'int'> <class 'float'>
Las cadenas no numéricas lanzan ValueError
Pasar algo que no se puede leer como número, como int("abc") o float("hello"), lanza ValueError y detiene tu programa. Al convertir entrada del usuario directamente, los patrones habituales son comprobarla primero con isdigit() o capturarla con try / except (se ve en un capítulo posterior).
Patrones comunes de conversión
Para terminar, aquí tienes tres patrones de conversión que suelen hacer tropezar en la práctica.
| Objetivo | Cómo escribirlo | Resultado |
|---|---|---|
| Convertir "3.14" a entero | int(float("3.14")) | 3 (decimales truncados) |
| Contar los dígitos de un int | len(str(1234)) | 4 |
| Redondear un float a entero | round(3.7) — no int(), usa round() | 4 |
int("3.14") lanza ValueError. Esto es porque int() solo acepta cadenas que parezcan enteros, así que una cadena con punto decimal hay que pasarla primero por float() y luego a int(): dos pasos.
Ten en cuenta también que int() trunca (descarta la parte decimal). Si quieres redondeo, usa round().
Una cadena con punto decimal no se puede pasar directamente a int().
Conviértela primero con float(), y luego pasa el resultado a int(): una conversión en dos pasos para obtener un entero.
En este artículo repasamos la conversión de tipo con str() / int() / float(). Una forma fácil de recordarlo: número → cadena sirve para construir la salida que se muestra, y cadena → número sirve para procesar entradas y datos.
Verificación de conocimientos
Responde cada pregunta una a una.
Pregunta 2¿Cuál es el resultado correcto de ejecutar int("3.14")?
Pregunta 3¿Qué devuelve len(str(1234))?