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: La Torre de Control

Ahora toca dirigir el tráfico de datos. Sin red de seguridad.


Ejercicio 7.1: El Portero del Club (Repetido y Mejorado)

Un portero como el del capítulo de operadores, pero esta vez el programa habla en voz alta en lugar de solo imprimir True o False.

  1. Define edad y tiene_pase.
  2. La regla de entrada: tener 18 años o más y traer el pase.
  3. Usa un if/else:
    • Si cumple la regla: imprime “Bienvenido al club”.
    • Si no: imprime “Lo siento, no puedes pasar”.

Pista 1: junta las dos condiciones (edad y pase) con el operador lógico que exige que ambas sean verdaderas para dejar pasar.

Pista 2: combina las dos condiciones con and en un solo if; luego un print() distinto en cada rama del if/else.

Ejercicio 7.2: El Clasificador de Envíos

El destino del paquete manda. El costo cambia según a dónde va.

  1. Crea una variable destino.
  2. Usa if/elif/else:
    • Si es “Norteamérica”: Costo $50.
    • Si es “Europa”: Costo $70.
    • Si es “Asia”: Costo $90.
    • Cualquier otro: Costo $120.
  3. Imprime el costo final.

Pista 1: solo se ejecuta la primera condición que se cumple; el orden de los elif no cambia el resultado aquí porque los destinos no se solapan.

Pista 2: encadena un if/elif que compare destino con cada región y le asigne su costo, cerrando con un else para “cualquier otro”.

Ejercicio 7.3: La Máquina de Café (Match-Case)

El usuario elige una opción de un menú numérico:

1: Espresso
2: Capuchino
3: Latte
  1. Usa match para imprimir: “Preparando [bebida]…” según el número.
  2. Agrega un case _ para imprimir “Opción inválida” si elige el 4 o 5.

Pista 1: vas a necesitar un match sobre la opción elegida, con un case para cada bebida y algo que capture cualquier valor no listado antes.

Pista 2: input() siempre entrega texto. Si tus patrones son números (case 1:), convierte primero con int(), y usa case _ como comodín final; si no conviertes, ningún caso numérico coincidirá jamás.

Ejercicio 7.4: Calificación Escolar (Lógica de Rangos)

Convierte una calificación numérica (0-100) en letra. El orden de las condiciones no es negociable.

  • 90-100: A
  • 80-89: B
  • 70-79: C
  • 60-69: D
  • Menos de 60: F
  • Reto: ¿Qué pasa si alguien ingresa 105 o -5? Agrega validación al principio, antes de todo lo demás.

Pista 1: piensa en qué orden deben ir las comparaciones para que una calificación de 95 no caiga primero en la rama de “80-89”.

Pista 2: ordena las condiciones de mayor a menor umbral (primero >= 90, luego >= 80, y así). Como cada elif solo se revisa si el anterior falló, la primera condición verdadera es la única que se ejecuta.

Ejercicio 7.5: El Robot Explorador (Patrones)

Tu robot recibe coordenadas como una tupla (x, y), la misma estructura de datos que ya usaste en el Cap. 5. Usa match para detectar casos especiales:

  1. Si es (0, 0) → Imprime “En la base”.
  2. Si es (0, y) → Imprime “En el eje Y”.
  3. Si es (x, 0) → Imprime “En el eje X”.
  4. Cualquier otro → Imprime “En el cuadrante”.

Pista 1: match puede usar nombres de variable dentro del patrón para “capturar” cualquier valor que caiga en esa posición de la tupla.

Pista 2: un patrón como case (0, variable): captura cualquier punto sobre un eje; el orden de los case importa, así que los más específicos (como el origen) van primero.

Ejercicio 7.6: El Cajero con Guardas (Truthiness)

Este ejercicio usa def y return, las piezas del Capítulo 9 que ya viste asomarse en la sección de guardas. No necesitas entenderlas a fondo: copia este esqueleto y trabaja adentro.

def cobrar(carrito, tiene_dinero):
    # tus guardas van aquí
    return "Venta completada"

print(cobrar([], True))

Escribe una función cobrar(carrito, tiene_dinero) con cláusulas de guarda:

  1. Si el carrito está vacío (recuerda: una lista vacía cuenta como “falsa”), devuelve “Carrito vacío”.
  2. Si no hay dinero, devuelve “Pago rechazado”.
  3. Si pasa ambas, devuelve “Venta completada”. Pruébala con los tres casos.

Pista 1: una cláusula de guarda es simplemente un if que corta la ejecución temprano con un return, antes de llegar al caso “feliz”.

Pista 2: usa guardas: un if que retorne el mensaje de carrito vacío en cuanto no haya carrito, otro para el pago rechazado, y al final el return de venta completada, que solo se alcanza si ninguna guarda se activó antes.


¡Ojo!: El orden de los if importa más de lo que parece. Pon siempre las condiciones más específicas primero, o usa elif con cuidado.


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


Ya sabes tomar una decisión. El siguiente capítulo enseña a repetirla: los bucles que procesan cientos de cajas sin que escribas la misma instrucción una y otra vez.