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

Ejercicios: Gestión de Inventario

Hora de poner manos a la obra con nuestras cajas de datos.


Ejercicio 4.1: El Inventario Inicial

Crea un archivo inventario.py. Declara las siguientes variables usando Type Hints explícitos e imprímelas:

  1. Nombre del producto (Texto): “Laptop Gamer”
  2. Precio (Decimal): 1250.50
  3. Cantidad en stock (Entero): 15
  4. ¿Está disponible? (Booleano): Verdadero

Pista 1: La sintaxis de un type hint es nombre_variable: tipo = valor; el tipo va después de los dos puntos, no después del signo igual.

Pista 2: Usa float para el precio, int para la cantidad, str para el nombre y bool para “¿está disponible?” (con True, sin comillas).

Ejercicio 4.2: Corrección de Datos

El código de abajo tiene tipos mal asignados según lo que representa cada variable. Tu trabajo es encontrar el error conceptual y escribir la versión corregida en tu archivo. No siempre hay una respuesta única; razona por qué elegiste cada tipo.

# CÓDIGO INCORRECTO (No copiar)
edad_usuario = "veinticinco"  # Debería ser número
codigo_postal = 55120         # Los códigos postales no se suman, mejor texto
altura_metros = "1.75"        # Debería ser número decimal

Pista 1: Pregúntate para cada variable: ¿voy a hacer matemáticas con este valor, o solo lo voy a mostrar o comparar como texto?

Pista 2: codigo_postal casi nunca se suma ni se resta, así que aunque parezca un número, funciona mejor como str; altura_metros sí necesita operarse, así que debe ser float.

Ejercicio 4.3: Operaciones Básicas de Tipos

En un nuevo archivo calculos.py:

  1. Crea dos variables numéricas: precio_unitario y cantidad.
  2. Calcula el total (precio_unitario * cantidad) y guárdalo en una variable total.
  3. Imprime una frase usando f-strings: “El costo total es: $[total]”.

Pista 1: Multiplica directamente las dos variables numéricas; Python no necesita que conviertas nada si ambas ya son int o float.

Pista 2: Un f-string se escribe con una f antes de las comillas y la variable entre llaves: f"...{variable}...".

Ejercicio 4.4: El Misterio del Tipo

Ya conociste type() en la sección de Tipos Primitivos: revela qué clase de caja es una variable. Úsala para imprimir el tipo de estos valores y anota el resultado como comentario. No todos los casos dan lo que esperarías a primera vista:

  1. type(3.14)
  2. type("True") (Ojo: tiene comillas)
  3. type(True)
  4. type(100)

Pista 1: type() siempre devuelve la clase real del valor, no lo que tú crees que “debería” ser por cómo se ve escrito.

Pista 2: Fíjate en las comillas del segundo valor. ¿Cambian lo que Python cree que tiene enfrente, aunque a tus ojos diga True?

Ejercicio 4.5: Conversión de Emergencia (Casting)

A veces llega al almacén una caja de texto con un número adentro ("50"). Para hacer matemáticas con ella hay que convertirla primero. Sin esa conversión, Python se niega a operar. Investiga o prueba cómo usar int() y str():

  1. Crea una variable de texto numero_texto = "100".
  2. Conviértela a entero y súmale 50.
  3. Imprime el resultado (debería ser 150).

Pista 1: int() y str() reciben un valor y devuelven una copia convertida a ese tipo; no modifican la variable original a menos que reasignes.

Pista 2: Convierte con int(numero_texto) y guarda el resultado en una variable (o reasigna la misma) antes de sumarle 50; sumar directamente sobre el texto da error.

Ejercicio 4.6: Rebanando Códigos (Slicing)

Tienes un código de producto: codigo = "PRD-2026-TORNILLO". Usando indexado y rebanado, imprime por separado:

  1. El prefijo (los tres primeros caracteres).
  2. El año (2026).
  3. El último segmento (TORNILLO).
  4. El último carácter, sin contar cuántos hay.

Pista 1: Cuenta las posiciones desde cero: codigo[0] es la primera letra, y el rebanado [inicio:fin] no incluye la posición fin.

Pista 2: Usa índices fijos para el prefijo y el año (codigo[0:3], codigo[4:8]); para el último segmento y el último carácter, los índices negativos (codigo[-8:], codigo[-1]) te evitan contar la longitud total.

Ejercicio 4.7: La Ficha de Recepción (Integrador)

El gran final del capítulo: junta todo lo aprendido en un solo flujo de recepción de mercancía.

  1. Pide el nombre del producto con input() y normalízalo: sin espacios sobrantes y en minúsculas (.strip(), .lower()).
  2. Pide el precio unitario y conviértelo a float.
  3. Imprime la ficha con una f-string: Producto: tornillos | Precio: $19.99 (el precio a dos decimales, con :.2f).
  4. Remata imprimiendo el tipo de cada variable con type() para confirmar que la conversión ocurrió.

Pista 1: El flujo tiene cuatro pasos encadenados: pedir el texto, limpiarlo, convertir el precio y formatear la salida. Cada paso parte del resultado del anterior, así que resuélvelos en orden.

Pista 2: Encadena input("...").strip().lower() para pedir y normalizar el nombre en una sola línea; convierte el precio con float() apenas lo recibas y usa :.2f dentro del f-string para los dos decimales. Si algo no cuadra, agrega un print(type(variable)) extra justo después de cada conversión para confirmar en qué punto exacto cambió el tipo.


Nota: La conversión de tipos (Casting) es como sacar el contenido de una caja y pasarlo a otra de diferente forma.


Soluciones: en el Apéndice B está la solución de cada ejercicio. Inténtalo por tu cuenta antes de consultarla.


Ya conoces las cajas simples y una idea general de las compuestas. En el siguiente capítulo entramos de lleno a los cuatro muebles organizadores del almacén: listas, diccionarios, conjuntos y tuplas.