Ejercicio 07 — Determina si un ano es bisiesto
Dificultad: rojo · Módulo 02 (Condicionales)
Enunciado
Determina si un ano es bisiesto (div. por 4, excepto siglos no div. por 400)
Cómo se resuelve
Saber si un año es bisiesto es un problema con una regla enredada, y el truco es traducirla a una cadena de condiciones ordenada de la más exigente a la más general.
- La regla real es: bisiesto si es divisible por 4, salvo los años de siglo (divisibles por 100) que no lo sean también por 400. En vez de una sola condición gigante con
and,orynot, la desplegamos en tramos que se comprueban en orden. if ano % 400 == 0:— lo primero es el caso más fuerte. Todo divisible por 400 es bisiesto sí o sí (por ejemplo 2000), así que lo resolvemos antes que nada.elif ano % 100 == 0:— llegar aquí significa que NO era divisible por 400. Un año divisible por 100 pero no por 400 (como 1900) es la excepción: no es bisiesto.elif ano % 4 == 0:— descartados los siglos, cualquier otro múltiplo de 4 (como 2024) sí es bisiesto. Elelsefinal cubre el resto de años, que no lo son.- Guardamos el veredicto en
bisiesto(un booleanoTrue/False) y luego un segundoif bisiesto:decide el mensaje. Separar el cálculo de la impresión hace la lógica más legible que meter losprinten cada rama.
Trampa habitual: comprobar ano % 4 == 0 antes que el caso del 100. Si preguntas por el 4 primero, años como 1900 (múltiplo de 4 y de 100 pero no de 400) se colarían como bisiestos. El orden de los elif no es decorativo: las excepciones más específicas van arriba.
Para practicar — cópialo y complétalo
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
# Curso de Python — Modulo 02: Condicionales
# Ejercicio 07 — PRACTICA (rellena los TODO)
# Enunciado: Determina si un ano es bisiesto (div. por 4, excepto siglos no div. por 400)
# Dificultad: rojo
# Ejecutar: python3 ej07_practica.py
# Regla (leela despacio):
# Un ano es bisiesto si:
# - Es divisible por 400 (ej: 2000 → SI)
# - O es divisible por 4 pero NO por 100 (ej: 2024 → SI; 1900 → NO)
# TODO: lee el ano como entero
ano = None
# TODO: determina si es bisiesto con if / elif / else
# Pista: comprueba primero % 400, luego % 100, luego % 4
# Guarda el resultado en una variable booleana 'bisiesto'
bisiesto = False
# TODO: imprime "<ano> es bisiesto" o "<ano> NO es bisiesto"Solución — cópiala y ejecútala
# Curso de Python — Modulo 02: Condicionales
# Ejercicio 07 — MODELO (resuelto)
# Enunciado: Determina si un ano es bisiesto (div. por 4, excepto siglos no div. por 400)
# Dificultad: rojo
# Ejecutar: python3 ej07_modelo.py
# Regla completa:
# bisiesto si (divisible por 4) AND NOT (divisible por 100 pero NO por 400)
# Equivalente: div. por 400 OR (div. por 4 AND NOT div. por 100)
ano = int(input("Introduce un ano: "))
if ano % 400 == 0:
bisiesto = True
elif ano % 100 == 0:
# divisible por 100 pero no por 400 → NO es bisiesto
bisiesto = False
elif ano % 4 == 0:
bisiesto = True
else:
bisiesto = False
if bisiesto:
print(f"{ano} es bisiesto")
else:
print(f"{ano} NO es bisiesto")Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.