
Semana 3 · Día 2: Práctica con edades, notas y validaciones
Construye un programa que valida edades y notas, prueba los límites 17/18 y 59/60, y corrige una comparación defectuosa en 60 minutos.
Entrega de hoy
Al terminar los 60 minutos tendrás una carpeta
dia-02-validaciones/ con cuatro evidencias:validaciones.py, un programa que pide una edad y una nota;predicciones.md, con el resultado esperado para cuatro pares de prueba;salida.txt, con las cuatro ejecuciones reales;prueba_limite.py, una copia donde provocarás y corregirás un error lógico.
La etiqueta exacta de la malla es Semana 3 · Día 2: Práctica con edades, notas y validaciones. Hoy no basta con clasificar un número: primero debes decidir si pertenece al rango aceptado. No avances todavía a bucles, funciones ni manejo de excepciones.
Sesión de 60 minutos
00:00-10:00 · Repaso de condiciones y límites
Abre
predicciones.md y responde sin ejecutar código:- ¿Qué tipo de dato devuelve
input()y por qué necesitasint()antes de comparar? - ¿Qué diferencia hay entre una entrada inválida y una entrada válida que queda por debajo de un límite?
- Si la mayoría de edad empieza en
18, ¿qué debería ocurrir con17y con18? - Si una nota aprobada empieza en
60, ¿qué debería ocurrir con59y con60?
Después escribe tu predicción para estos cuatro pares, siempre en el orden
(edad, nota):(-1, 59)(17, 60)(18, -1)(121, 101)
Usarás un rango de
0 a 120 para la edad y de 0 a 100 para la nota. Por tanto, una edad negativa o mayor que 120 es inválida; una nota negativa o mayor que 100 también lo es. Dentro de esos rangos, 18 separa menor y mayor de edad, mientras que 60 separa reprobada y aprobada.10:00-30:00 · Recurso de la malla
Abre Learn Python - Full Course for Beginners [Tutorial], el curso gratuito de freeCodeCamp nombrado en la malla. Ve a
1:40:06 · If Statements y continúa hasta 2:00:06; dentro de ese tramo, If Statements & Comparisons comienza en 1:54:07. Detente antes de 2:00:37 · Building a better Calculator: hoy necesitas condiciones y comparaciones, no otro proyecto. 1Reserva los últimos cinco minutos del bloque para anotar tres cosas en
predicciones.md:- qué comparación deja fuera un valor demasiado bajo;
- qué comparación deja fuera un valor demasiado alto;
- por qué conviene validar el rango antes de clasificar.
Python permite encadenar varias ramas
elif, mientras que la rama else es opcional. En una cadena if–elif–else, el orden decide qué condición se evalúa primero y qué bloque termina ejecutándose. 230:00-55:00 · Programa, cuatro pruebas y un error controlado
Crea
dia-02-validaciones/validaciones.py:edad = int(input("Ingresa tu edad: "))
nota = int(input("Ingresa tu nota: "))
if edad < 0:
print("Edad inválida")
elif edad > 120:
print("Edad inválida")
elif edad < 18:
print("Menor de edad")
else:
print("Mayor de edad")
if nota < 0:
print("Nota inválida")
elif nota > 100:
print("Nota inválida")
elif nota < 60:
print("Reprobada")
else:
print("Aprobada")Dedica unos ocho minutos a escribirlo. Las dos cadenas siguen la misma secuencia: límite inferior inválido, límite superior inválido y clasificación de los valores que sí quedan dentro del rango. El
else final ya no necesita otra comparación porque las ramas anteriores descartaron los demás casos.Antes de ejecutar, completa en
predicciones.md el resultado esperado:(-1, 59)debe producirEdad inválidayReprobada.(17, 60)debe producirMenor de edadyAprobada.(18, -1)debe producirMayor de edadyNota inválida.(121, 101)debe producirEdad inválidayNota inválida.
Ejecuta
validaciones.py cuatro veces, una por cada par. Copia en salida.txt las dos entradas y las dos líneas de resultado de cada ejecución. Separa las pruebas con una línea en blanco y marca si la salida coincidió con tu predicción. Estas cuatro ejecuciones comprueban valores inválidos por ambos extremos y, a la vez, los cortes 17/18 y 59/60.Ahora duplica el archivo como
prueba_limite.py. En la copia, cambia solo esta línea:elif nota < 60:por esta:
elif nota <= 60:Ejecuta
prueba_limite.py con 17 y 60. La nota quedará como Reprobada: 60 satisface nota <= 60, así que Python entra en esa rama y ya no llega al else. Guarda esa salida bajo ERROR CONTROLADO en predicciones.md. Después restaura nota < 60, repite el mismo caso y comprueba que vuelve a mostrar Aprobada.Para terminar esta práctica, introduce solo números enteros. Las entradas de texto quedan fuera del alcance de hoy.
55:00-60:00 · Cierre de notas
Añade estas tres líneas al final de
predicciones.md:- Rango que validé: qué valores aceptaste para edad y nota.
- Límite que comprobé: qué cambió entre
17/18y entre59/60. - Error que corregí: por qué
<= 60clasificaba mal la nota exacta de60.
Cierra
prueba_limite.py con la comparación correcta. La evidencia útil no es solo que el programa funcione, sino que puedas señalar qué entrada fallaba, qué condición la capturaba y qué cambió después de la corrección.Hecho cuando...
- Existe
dia-02-validaciones/con los cuatro archivos pedidos. - Escribiste las predicciones antes de ejecutar.
-
validaciones.pypide y convierte una edad y una nota. - La edad acepta de
0a120y la nota de0a100. - Ejecutaste por separado
(-1, 59),(17, 60),(18, -1)y(121, 101). - Guardaste las entradas, las salidas reales y la comparación con tus predicciones.
- Provocaste el fallo de
60connota <= 60en la copia. - Restauraste
nota < 60y verificaste que60queda aprobada. - Puedes explicar por qué se valida el rango antes de clasificar.
- No usaste bucles, funciones ni excepciones.
References
- 1
- 2More Control Flow Tools — Python documentation
docs.python.org
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.
