Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Conversión de Tipos (Casting)

Transformar un dato de un tipo a otro es algo que vas a necesitar constantemente. No es un caso raro ni avanzado: ocurre desde el primer programa útil que escribas. Si recibes un número como texto (“25”) y quieres sumarle algo, Python no lo va a adivinar. Tienes que convertirlo tú.

Funciones de conversión (Casting)

Python trae funciones integradas que actúan como “máquinas transformadoras” del almacén: reciben un valor de un tipo y devuelven uno equivalente en otro formato.

1. A Entero: int()

Convierte cadenas de texto numéricas y flotantes a números enteros.

# Texto a entero
texto = "25"
numero = int(texto)
print(type(numero))  # <class 'int'>

# Flotante a entero: trunca hacia cero (no redondea)
precio = 19.99
print(int(precio))   # 19

# "Hacia cero" importa con negativos: NO baja al siguiente entero
print(int(-19.99))   # -19  (no -20)

2. A Flotante: float()

Convierte enteros y cadenas a números decimales.

cadena = "19.99"
valor = float(cadena)
print(valor)  # 19.99

3. A Cadena: str()

Convierte cualquier tipo de dato a texto. Sin esto, concatenar un número con un mensaje lanza un error inmediato.

edad = 25
mensaje = "Tengo " + str(edad) + " años"
print(mensaje)

Adelanto: + pega textos (y suma números). El catálogo completo de operadores llega en el Capítulo 6; por ahora basta con esto.

Formateo de Cadenas (f-strings)

Antes de las f-strings, construir mensajes con variables era engorroso: concatenaciones, llamadas a str(), mucho ruido visual. Desde Python 3.6 eso cambió. Las f-strings son la forma correcta de hacer esto ahora, y hay pocas razones para usar las alternativas en código nuevo.

Sintaxis

Se coloca una f antes de las comillas y las variables se encierran entre llaves {}.

nombre = "Ana"
edad = 25
altura = 1.65

# Formateo directo
mensaje = f"Hola {nombre}, tienes {edad} años."

# Formateo de números (ej. 2 decimales)
info = f"Altura: {altura:.2f} metros"

Comparación de métodos

MétodoEjemploRecomendación
f-stringsf"Hola {nombre}"Recomendado (legible y rápido)
Concatenación"Hola " + nombreÚtil para casos muy simples
format()"Hola {}".format(nombre)Código legado (versiones antiguas)

Errores comunes en conversión

  1. Convertir texto no numérico: Intentar int("hola") generará un ValueError.
  2. Pérdida de precisión: Convertir float a int elimina los decimales truncando hacia cero (int(-19.99) es -19, no -20), nunca redondea.
  3. Texto decimal a entero: int("19.99") también lanza ValueError. int() solo entiende cadenas de enteros, no de decimales. Si te llega "19.99" como texto y quieres un entero, hazlo en dos pasos: int(float("19.99"))19.

Hablando con el Operario: input()

Hasta ahora tus programas trabajan solos. La función input() abre una ventanilla: detiene el programa, muestra un mensaje y espera a que el operario teclee algo y presione Enter. (Por eso este bloque y los que siguen con input() no traen botón de Ejecutar: el sandbox del navegador no puede esperar tu teclado, así que aquí funcionan solo como ejemplo de lectura.)

respuesta: str = input("¿Cuántas cajas llegaron hoy? ")
print(type(respuesta))  # <class 'str'>  ¡Siempre!

Aquí está el detalle que causa más bugs de principiante: input() devuelve texto (str) SIEMPRE. No importa que el operario haya tecleado 50. Para Python eso es "50", una etiqueta, no una cantidad. Intenta hacer respuesta + 10 y obtendrás un TypeError. Sin esperar teclado, así se ve con el valor que input() te habría entregado:

respuesta: str = "50"  # esto es lo que input() te habría devuelto
print(respuesta + 10)
Traceback (most recent call last):
  File "almacen.py", line 2, in <module>
    print(respuesta + 10)
          ~~~~~~~~~~^~~~
TypeError: can only concatenate str (not "int") to str

(“Solo se puede concatenar str (no ‘int’) con str”: Python no mezcla texto y número con +, aunque el texto sea puros dígitos.)

Por eso el casting no es un lujo: es el paso obligatorio entre la ventanilla y cualquier cálculo.

cajas = int(input("¿Cuántas cajas llegaron hoy? "))
print(cajas + 10)  # Ahora sí es un número

Ejemplo práctico: Calculadora de edad

print("=== CALCULADORA DE EDAD ===")

# input() siempre devuelve texto (str)
anio_nacimiento_str = input("Ingresa tu año de nacimiento: ")

# Convertimos a entero para poder restar
anio_nacimiento = int(anio_nacimiento_str)
anio_actual = 2026

edad = anio_actual - anio_nacimiento

print(f"Tienes aproximadamente {edad} años.")