En este post te voy a enseñar a obtener los días totales que tiene un mes, a partir del número de mes, tomando en cuenta el año bisiesto y el mes, ya que no todos los días tienen 30, 31 o 28 días.
Si bien el resultado será confiable, esto que te muestro es más bien la solución a un ejercicio de programación en Python que indica cuántos días tiene un mes tomando en cuenta el año.
Para saber la cantidad de días que tiene un mes, necesitamos también el año; esto para el caso de febrero, pues bien sabemos que los años bisiestos agregan un día a febrero.
A partir del año y mes hacemos una comprobación con un if
para evaluar el mes. En caso de que sea febrero, comprobamos si es o no bisiesto con una función expuesta anteriormente.
Veamos el código. Tenemos la siguiente función que recibe dos enteros (año con mes) y devuelve un entero indicando la cantidad de días que tiene el mes en ese año. Toma en cuenta que el mes comienza a contar en 1, así que enero es 1 y diciembre es 12.
def obtener_dias_del_mes(mes: int, anio: int) -> int:
# Abril, junio, septiembre y noviembre tienen 30
if mes in [4, 6, 9, 11]:
return 30
# Febrero depende de si es o no bisiesto
if mes == 2:
if es_bisiesto(anio):
return 29
else:
return 28
else:
# En caso contrario, tiene 31 días
return 31
Como ves el código es fácil de entender. Si el mes es abril, junio, septiembre o noviembre se devuelve 30; en este caso ahorramos if
con el operador in.
En caso de que sea febrero, se evalúa si el año es bisiesto y se devuelve ya sea 28 o 29. Finalmente, si no se cumple ninguno de los otros casos, se devuelve 31.
El código que demuestra el uso de la función, así como las funciones auxiliares escritas en Python quedan como se ve a continuación:
"""
https://parzibyte.me/blog
"""
def es_bisiesto(anio: int) -> bool:
return anio % 4 == 0 and (anio % 100 != 0 or anio % 400 == 0)
def obtener_dias_del_mes(mes: int, anio: int) -> int:
# Abril, junio, septiembre y noviembre tienen 30
if mes in [4, 6, 9, 11]:
return 30
# Febrero depende de si es o no bisiesto
if mes == 2:
if es_bisiesto(anio):
return 29
else:
return 28
else:
# En caso contrario, tiene 31 días
return 31
# Probamos
mes = 9
anio = 2020
dias = obtener_dias_del_mes(mes, anio)
print(dias)
Para el caso del código que he colocado, se imprimirá 30 días, pues esa es la cantidad de días que tiene el mes de septiembre del 2020.
Puedes leer más sobre Python en mi blog.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.