Este es otro ejemplo de simplificación del código, que pasa del tradicional y explícito a uno más compacto. Dice el problema:
Se añade un día extra al calendario casi cada cuatro años, el 29 de febrero, y este día se denomina día bisiesto. Esto corrige el calendario teniendo en cuenta que nuestro planeta tarda aproximadamente 365.25 días en orbitar alrededor del Sol. Un año bisiesto contiene un día bisiesto. En el calendario gregoriano, se utilizan tres condiciones para identificar los años bisiestos:
- El año es divisible por 4, a menos que:
- El año no es divisible por 100, a menos que:
- El año también es divisible por 400. En ese caso, es bisiesto.
Esto significa que, en el calendario gregoriano, los años 2000 y 2400 son bisiestos, mientras que 1800, 1900, 2100, 2200, 2300 y 2500 no lo son.
Una respuesta que implementa paso a paso las condiciones descritas es:
def is_leap(year):
leap = False
# Write your logic here
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
leap = True
else:
leap = False
else:
leap = True
return leap
year = int(input())
print(is_leap(year)
Ahora bien, los programadores más avezados estarán tentados a hacer algo como:
def is_leap(year):
return year % 4 == 0 and (year % 400 == 0 or year % 100 !=0)
year = int(input())
print(is_leap(year))
¿Es esto pythonico? No dudo que algunos dirán que sí, pero recordemos el «Zen de Python«1 que señala: «Explicit is better than implicit«. Si el nombre de la función y la variable fueran otros, identificar el propósito de la función sería más difícil. Al final, son los programadores quienes decidirán qué estilo favorecerán, pero eso no determina si es más «pythonico» o no.
Adicionalmente, la construcción sintáctica de la segunda opción no es algo que particularmente distinga a Python; lo mismo puede lograrse en otros lenguajes mediante un operador ternario. Personalmente, no calificaría esta simplificación como «pythonica«.
Referencias
- Tim Peters, «PEP 20 – The Zen of Python«, python.org, web. Published: 2004.08.19; visited: 2026.03.19. URL: https://peps.python.org/pep-0020/.
Siguiente

