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.
- Define
edadytiene_pase. - La regla de entrada: tener 18 años o más y traer el pase.
- 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
anden un soloif; luego unprint()distinto en cada rama delif/else.
Ejercicio 7.2: El Clasificador de Envíos
El destino del paquete manda. El costo cambia según a dónde va.
- Crea una variable
destino. - Usa
if/elif/else:- Si es “Norteamérica”: Costo $50.
- Si es “Europa”: Costo $70.
- Si es “Asia”: Costo $90.
- Cualquier otro: Costo $120.
- Imprime el costo final.
Pista 1: solo se ejecuta la primera condición que se cumple; el orden de los
elifno cambia el resultado aquí porque los destinos no se solapan.Pista 2: encadena un
if/elifque comparedestinocon cada región y le asigne su costo, cerrando con unelsepara “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
- Usa
matchpara imprimir: “Preparando [bebida]…” según el número. - Agrega un
case _para imprimir “Opción inválida” si elige el 4 o 5.
Pista 1: vas a necesitar un
matchsobre la opción elegida, con uncasepara 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 conint(), y usacase _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 cadaelifsolo 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:
- Si es
(0, 0)→ Imprime “En la base”. - Si es
(0, y)→ Imprime “En el eje Y”. - Si es
(x, 0)→ Imprime “En el eje X”. - Cualquier otro → Imprime “En el cuadrante”.
Pista 1:
matchpuede 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 loscaseimporta, así que los más específicos (como el origen) van primero.
Ejercicio 7.6: El Cajero con Guardas (Truthiness)
Este ejercicio usa
defyreturn, 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:
- Si el carrito está vacío (recuerda: una lista vacía cuenta como “falsa”), devuelve “Carrito vacío”.
- Si no hay dinero, devuelve “Pago rechazado”.
- Si pasa ambas, devuelve “Venta completada”. Pruébala con los tres casos.
Pista 1: una cláusula de guarda es simplemente un
ifque corta la ejecución temprano con unreturn, antes de llegar al caso “feliz”.Pista 2: usa guardas: un
ifque retorne el mensaje de carrito vacío en cuanto no haya carrito, otro para el pago rechazado, y al final elreturnde venta completada, que solo se alcanza si ninguna guarda se activó antes.
¡Ojo!: El orden de los
ifimporta más de lo que parece. Pon siempre las condiciones más específicas primero, o usaelifcon 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.