Sesión 4: Decisiones múltiples, anidadas y casos límite¶
Objetivo¶
Resolver problemas con varios caminos lógicos y considerar casos límite en la solución.
Producto de la sesión¶
Elabora un programa que clasifique correctamente situaciones según varias condiciones y presente una salida clara.
Resultado esperado¶
Construye un programa con decisiones múltiples o anidadas, organizando la solución en entrada, proceso y salida y verificando casos límite.
Alcance de la sesión¶
- Uso de decisiones múltiples con
if-elif-else,match-casey decisiones anidadas. - Clasificación de datos según rangos, categorías y prioridad de reglas.
- Verificación de casos límite y situaciones fuera de rango.
- Aplicación en ejercicios guiados y práctica autónoma.
Base conceptual de la sesión¶
- if-elif-else
- match-case
- decisiones anidadas
- clasificación
- prioridad de reglas
- casos límite
1. If-Elif-Else
Concepto Organiza varias alternativas cuando el problema tiene más de dos posibles respuestas.
Elementos o clasificación Decisión múltiple con varias ramas ordenadas por prioridad.
Criterio de uso Se usa cuando hay varias categorías posibles. El orden de las condiciones debe ir de lo más específico a lo más general.
Ejemplo de aplicación Clasificar una nota en destacado, esperado o refuerzo.
2. Match-Case
Concepto Permite seleccionar una acción según el valor exacto de una variable o expresión.
Elementos o clasificación Estructura de selección múltiple por casos y una opción general de cierre.
Criterio de uso
Conviene cuando el problema depende de opciones definidas, como menús, códigos o categorías fijas. En Python cumple un papel similar al switch de otros lenguajes.
Ejemplo de aplicación Elegir una operación según una opción de menú.
3. Decisiones Anidadas
Concepto Aparecen cuando una decisión depende del resultado de otra decisión previa.
Elementos o clasificación Una decisión interna dentro de una decisión externa.
Criterio de uso Son útiles cuando una pregunta depende de otra, pero deben mantenerse simples para no dificultar la lectura del algoritmo.
Ejemplo de aplicación Primero validar rango y luego clasificar el valor.
4. Clasificación
Concepto Consiste en ubicar un dato dentro de una categoría según reglas definidas.
Elementos o clasificación Por rangos, categorías o cumplimiento de reglas.
Criterio de uso Clasificar exige definir rangos o reglas sin contradicciones, sin vacíos y con límites claramente tratados.
Ejemplo de aplicación Ubicar una temperatura en frío, templado o cálido.
5. Prioridad De Reglas
Concepto Obliga a ordenar las condiciones para que cada caso caiga en la opción correcta.
Elementos o clasificación Reglas más restrictivas primero y reglas generales después.
Criterio de uso Cuando varias reglas podrían cumplirse, debe decidirse cuál tiene preferencia y ubicarla primero en el algoritmo.
Ejemplo de aplicación Evaluar primero monto >= 500 y luego monto >= 200.
6. Casos Límite
Concepto Son valores cercanos al cambio de regla y ayudan a descubrir errores lógicos.
Elementos o clasificación Valores mínimos, máximos y de frontera entre categorías.
Criterio de uso Sirven para comprobar si los operadores relacionales elegidos incluyen o excluyen correctamente los extremos de cada rango.
Ejemplo de aplicación Probar exactamente 18 años o una nota igual a 14.
Síntesis de la sesión Para resolver ejercicios, no basta con escribir instrucciones en Python. Es necesario reconocer los datos, nombrarlos correctamente, elegir operaciones o estructuras de control apropiadas y comprobar el resultado con casos de prueba.
| Aspecto | Pregunta guía |
|---|---|
| Entrada | ¿Qué datos necesita recibir el programa? |
| Proceso | ¿Qué cálculos, decisiones o repeticiones transforman los datos? |
| Salida | ¿Qué resultado debe mostrarse y con qué formato? |
| Prueba | ¿Con qué casos se demuestra que la solución funciona? |
Actividad práctica¶
La sesión se desarrolla con exploración inicial, ejercicios guiados, ejercicios de aplicación y una tarea tipo competencia.
Arquitectura¶
Entrada -> Proceso -> Salida
- Entrada: datos del problema.
- Proceso: evaluación de varias condiciones, prioridad de reglas y tratamiento de casos límite.
- Salida: clasificación o resultado obtenido según la condición evaluada.
Mini laboratorio¶
Revisa cómo cambia una clasificación cuando el dato cae en distintos rangos, incluyendo valores fuera de rango.
nota = 14
if nota < 0 or nota > 20:
print('Fuera de rango')
elif nota >= 17:
print('Destacado')
elif nota >= 14:
print('Esperado')
else:
print('Otro nivel')
Ejercicio 1: Clasificación de desempeño¶
Clasificaremos una nota final en niveles de desempeño y controlaremos el caso de entradas fuera de rango.
Resolución guiada
- Comprender: explica con una oración completa cuál es el resultado que debe obtener el programa.
- Entradas: enumera cada dato de entrada e indica su tipo de dato esperado.
- Procesos:
- describe la operación, condición, recorrido o función principal que usarás para resolver el problema
- ordena las acciones principales antes de escribir el código
- prepara cómo obtendrás el resultado final antes de mostrarlo
- Salidas: especifica la salida esperada y el formato con que se debe mostrar.
- Pruebas:
- caso normal: usa datos habituales para comprobar que el resultado esperado se cumpla
- caso límite: prueba el valor exacto donde cambia la regla principal
- caso excepcional: revisa qué sucede con una entrada vacía, inválida o fuera de rango
- Código:
nota = float(input('Nota final: '))
if nota < 0 or nota > 20:
print('Nota fuera de rango.')
elif nota >= 17:
print('Desempeño destacado')
elif nota >= 14:
print('Desempeño esperado')
elif nota >= 11:
print('En proceso')
else:
print('Requiere refuerzo')
Ejercicio 2: Clasificación por edad¶
Solicita la edad de una persona y clasifícala como niño, adolescente, adulto o adulto mayor.
Resolución guiada
- Comprender: el programa debe resolver este problema: Solicita la edad de una persona y clasifícala como niño, adolescente, adulto o adulto mayor
- Entradas: define los rangos de edades sin dejar vacíos
- Procesos:
- ordena las condiciones de mayor a menor o de menor a mayor
- ordena las operaciones o decisiones antes de escribir el código
- prepara el resultado final que mostrarás al usuario
- Salidas: muestra el resultado solicitado por el enunciado con mensajes claros y ordenados.
- Pruebas:
- prueba un valor límite en cada cambio de categoría
- caso límite: prueba el valor exacto donde cambia la regla, condición o cálculo principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
edad = int(input('Edad: '))
if edad < 12:
etapa = 'Niño'
elif edad < 18:
etapa = 'Adolescente'
elif edad < 60:
etapa = 'Adulto'
else:
etapa = 'Adulto mayor'
print('Etapa:', etapa)
Ejercicio 3: Mayor de tres números con if-elif-else¶
Resolver nuevamente el problema de encontrar el mayor de tres números, pero ahora usando una cadena de decisiones múltiples. Esta forma permite expresar directamente qué caso gana: el primero, el segundo o el tercero.
Resolución guiada
- Comprender: se debe elegir una sola respuesta entre varias posibilidades.
- Entradas:
a,byc, como números decimales. - Procesos:
- comparar si
aes mayor o igual que los otros dos - si no lo es, comparar si
bes mayor o igual que los otros dos - si ninguna condición anterior se cumple, el mayor corresponde a
c - considerar empates cuando dos o tres valores comparten el valor mayor
- Salidas: número mayor y, si corresponde, aviso de empate.
- Pruebas: usa
8, 3, 5;4, 9, 2;6, 6, 1;2, 7, 7;5, 5, 5. - Código:
a = float(input('Número 1: '))
b = float(input('Número 2: '))
c = float(input('Número 3: '))
if a == b == c:
mayor = a
mensaje = 'Los tres números son iguales'
elif a >= b and a >= c:
mayor = a
mensaje = 'El primer número contiene el valor mayor'
if a == b or a == c:
mensaje = 'Existe empate en el valor mayor'
elif b >= a and b >= c:
mayor = b
mensaje = 'El segundo número contiene el valor mayor'
if b == a or b == c:
mensaje = 'Existe empate en el valor mayor'
else:
mayor = c
mensaje = 'El tercer número contiene el valor mayor'
if c == a or c == b:
mensaje = 'Existe empate en el valor mayor'
print('El mayor es:', mayor)
print('Observación:', mensaje)
Ejercicio 4: Acceso con usuario y clave¶
Solicita usuario y clave. Permite el acceso solo si ambos datos son correctos.
Resolución guiada
- Comprender: el acceso depende de dos condiciones que deben cumplirse al mismo tiempo.
- Entradas: usuario y clave ingresados por teclado.
- Procesos:
- compara el usuario con el valor esperado
- compara la clave con el valor esperado
- usa
andpara aceptar solo cuando ambos coinciden
- Salidas: mensaje de acceso permitido o denegado.
- Pruebas: prueba usuario correcto con clave incorrecta, usuario incorrecto y ambos correctos.
- Código:
usuario = input('Usuario: ')
clave = input('Clave: ')
if usuario == 'admin' and clave == '1234':
print('Acceso permitido')
else:
print('Acceso denegado')
Ejercicio 5: Descuento por rango de compra¶
Solicita el monto de una compra y clasifica el descuento aplicable según rangos definidos por el docente.
Resolución guiada
- Comprender: redacta con tus palabras qué debe resolver la tarea.
- Entradas: define qué datos ingresan y el tipo que tendrán.
- Procesos:
- describe la estrategia, fórmula, condición, estructura o algoritmo que piensas aplicar
- ordena las acciones principales antes de escribir el código
- prepara cómo obtendrás el resultado final antes de mostrarlo
- Salidas: indica con claridad qué resultado debe mostrar o registrar la solución.
- Pruebas:
- caso normal: usa datos habituales para comprobar que la solución funcione
- caso límite: prueba el valor exacto donde cambia la regla principal
- caso excepcional: revisa qué ocurre con una entrada vacía, inválida o fuera de rango
- Código:
monto = float(input('Monto de compra: '))
if monto >= 500:
descuento = 0.20
elif monto >= 200:
descuento = 0.10
else:
descuento = 0.05
print('Descuento aplicado:', descuento * 100, '%')
print('Monto final:', round(monto * (1 - descuento), 2))
Ejercicio 6: Menú de opciones con match-case¶
Solicita una opción numérica y muestra la acción correspondiente de un menú simple. Usa match-case para resolver cada caso y una opción general para valores no válidos.
Resolución guiada
- Comprender: el programa debe seleccionar una respuesta según el valor exacto de una opción.
- Entradas: una opción entera ingresada por teclado.
- Procesos:
- leer la opción elegida
- usar
match-casepara asociar cada número con una acción - considerar un caso general para opciones fuera del menú
- Salidas: mensaje correspondiente a la opción elegida o aviso de opción no válida.
- Pruebas: usa
1,2,3y un valor no contemplado como9. - Código:
opcion = int(input('Opción: '))
match opcion:
case 1:
print('Registrar estudiante')
case 2:
print('Consultar notas')
case 3:
print('Salir del sistema')
case _:
print('Opción no válida')
Aprendizaje autónomo¶
Desarrolle el producto de la sesión resolviendo una o más de las siguientes actividades mediante un programa con decisiones múltiples o anidadas claramente identificables.
1 Clasifica una temperatura como muy fría, fría, templada, cálida o muy cálida usando rangos definidos por ti.
# Actividad 1
2 Determina la categoría de una persona según su edad, cuidando que no existan vacíos entre rangos ni solapamientos.
# Actividad 2
3 Diseña una clasificación por rangos y compruébala con casos límite o valores fuera de rango para verificar que todas las reglas funcionen bien.
# Actividad 3
Evaluación del producto de la sesión¶
Lista de cotejo para revisar el producto elaborado por el estudiante:
- Identifica las entradas, las condiciones y la salida esperada del problema.
- Usa decisiones múltiples o anidadas de manera adecuada según el problema.
- Ordena correctamente las reglas de clasificación sin dejar casos sin cubrir.
- Verifica el programa con casos límite o valores fuera de rango antes de entregarlo.
- Entrega la evidencia del trabajo realizado.