Determinar el año bisiesto en Python

Muhammad Adnan Ashraf 21 junio 2023
  1. Introducción al año bisiesto
  2. Determinar el año bisiesto a través de una simple construcción if-else en Python
  3. Determine el año bisiesto a través del módulo Calendario en Python
  4. Determinar año bisiesto a través del operador condicional con el módulo Calendar en Python
Determinar el año bisiesto en Python

Este artículo discutirá la terminología conocida como año bisiesto. También veremos una implementación de Python para verificar si un año en particular es un año bisiesto o no.

Introducción al año bisiesto

La tierra tarda 6 horas más que 365 días en completar su círculo alrededor del sol.

Supongamos que no agregamos un día adicional en febrero (es decir, el 29). En ese caso, eventualmente hará que veamos muchos eventos religiosos y políticos en diferentes estaciones (aunque las fechas siguen siendo las mismas).

Sugiere que agreguemos un día a cada 4 años como 6 x 4 = 24. Sin embargo, no es tan sencillo porque las 6 horas extra no son exactas.

La tierra completa su revolución en aproximadamente 365 días, 5 horas, 48 minutos y 46 segundos haciendo una diferencia de 11 minutos y 14 segundos del enunciado discutido en el pasaje anterior. Esta sutil diferencia nos hace realizar cálculos más complejos para mantener las fechas en la misma temporada.

Por tanto, decimos que un año debe cumplir las siguientes condiciones para ser bisiesto:

  1. Descalificación Directa: Si el año en consideración no es divisible por 4, no califica para un año bisiesto. Por ejemplo, 2077 no es divisible por 4 (es decir, 2077 % 4 != 0), por lo que no es un año bisiesto.
  2. Si el año es divisible por 4 pero no por 100, entonces el año será bisiesto. Por ejemplo, 2024 es correctamente divisible por 4 pero no por 100 (es decir, 2024 % 4 == 0 y 2024 % 100 != 0), por lo que califica como un año bisiesto.
  3. Si el número es divisible por 4 y 100, comprobaremos si el año también es divisible por 400. En caso afirmativo, el año será bisiesto; de lo contrario, el año no será bisiesto.

Por ejemplo, 4000 es divisible por 4, 100 y 400, por lo que es un año bisiesto. Matemáticamente, si año % 4 == 0, año % 100 == 0 y año % 400 == 0, entonces el año es bisiesto.

La siguiente sección proporciona una implementación completa de Python que determinará si un año califica para ser un año bisiesto o no. Después de tener una comprensión fundamental del concepto de año bisiesto, veamos diferentes implementaciones para comprobar si un año es bisiesto o no.

Determinar el año bisiesto a través de una simple construcción if-else en Python

La siguiente implementación utiliza una construcción simple if-else para determinar un año bisiesto.

  1. Para una entrada de año dada, primero verificamos si se cumple la segunda condición; si es así, mostramos nuestro juicio positivo (es decir, el año es un año bisiesto).
  2. Si el año de entrada no satisface la condición compuesta dada en la línea 3, verificamos si el año de entrada sigue la tercera condición y mostramos nuestra decisión en consecuencia.
  3. Ahora bien, si el año no cumple ninguna de las condiciones mencionadas anteriormente, concluimos que el año no es bisiesto.

Código de ejemplo:

yearValue = int(input("Enter a year: "))
# here, yearValue means the year we want to check.
if yearValue % 4 == 0 and yearValue % 100 != 0:  # condition 2
    print(yearValue, "is a leap year")
elif yearValue % 4 == 0 and yearValue % 100 == 0:  # condition 3
    if yearValue % 400 == 0:
        print(yearValue, "qualifies as a leap year")
    else:
        print(yearValue, "does not qualify as a leap year")
else:
    print(yearValue, "does not qualify as a leap year")  # Condition 1

Ahora, evaluaremos nuestro programa en cada una de las tres condiciones tomando diferentes valores de entrada.

Salida Evaluando la 1ra Condición:

Enter a year: 2027
2027 does not qualify as a leap year

Salida Evaluando la 2da Condición:

Enter a year: 2024
2024 is a leap year

Salida Evaluando la 3ra Condición:

Enter a year: 4000
4000 qualifies as a leap year

Determine el año bisiesto a través del módulo Calendario en Python

El módulo calendario de Python es una de las herramientas confiables para realizar cálculos que involucran fechas. Sigue la convención europea (es decir, muestra el lunes como el primer día de la semana) y sirve como el equivalente de Python al programa cal de Unix.

Proporciona varias utilidades para realizar entradas y manipulaciones de fechas (incluida la visualización del calendario). Puede encontrar una lista detallada de las funcionalidades que ofrece el módulo calendario aquí.

El método isleap() es una de las funcionalidades del módulo calendario. Veamos el siguiente ejemplo para entender el uso del módulo calendario y el método isleap().

Código de ejemplo:

import calendar

yearValue = int(input("Enter a year: "))
if calendar.isleap(yearValue):
    print(yearValue, "qualifies as a leap year")
else:
    print(yearValue, "does not qualify as a leap year")

La primera línea del código anterior importa el módulo calendario. La segunda línea toma un año entero ingresado por el usuario y lo asigna a la variable yearValue.

El método calendar.isLeap() toma un valor de año entero y devuelve true o false si el argumento es un año bisiesto o no. Por lo tanto, podemos aplicar declaraciones de decisión para mostrar nuestros mensajes personalizados.

Probemos este código ejecutando el programa durante diferentes años:

Primer intento:

Enter a year: 2027
2027 does not qualify as a leap year

Segunda ejecución:

Enter a year: 2024
2024 qualifies as a leap year

Tercera carrera:

Enter a year: 4000
4000 qualifies as a leap year

Determinar año bisiesto a través del operador condicional con el módulo Calendar en Python

Podemos combinar el operador condicional con el módulo calendario para lograr lo mismo. El operador condicional es una construcción condicional ternaria que se puede utilizar como reemplazo de una construcción simple if-else.

Código de ejemplo:

import calendar

y = int(input("Enter a year: "))

# [statement_on_True] if [condition] else [statement_on_false]
print(y, "is a leap year") if (calendar.isleap(y)) else print(y, "is not a leap year")

El código anterior usa el operador condicional para mostrar si un año es bisiesto o no. La sintaxis del operador condicional está bien comentada en el código de la línea #4.

Salidas para varias corridas:

Primer intento:

Enter a year: 2027
2027 is not a leap year

Segunda ejecución:

Enter a year: 2024
2024 is a leap year

Tercera carrera:

Enter a year: 4000
4000 is a leap year

Si queremos omitir el uso del módulo calendario, podemos usar condiciones compuestas simples junto con el operador condicional ternario.

Además, existen muchas otras opciones para implementar el programa deseado (por ejemplo, construcción match-case). Dejamos que los geeks exploren e implementen diferentes variaciones.

Artículo relacionado - Python DateTime