Python: ejercicios resueltos de fechas

En este post de programación en Python vamos a resolver varios ejercicios con fechas. Se trata del tema introducción a la programación en donde se extra el año, mes y día de una fecha representada como entero.

Además de eso se muestran otras funciones que validan el año, el mes, obtienen el nombre del mes, etcétera.

Descripción

La solicitud dice así:

Una forma de representar fechas es utilizando números enteros de la siguiente forma: los primeros cuatro dígitos corresponden al año, los siguiente dos dígitos corresponden al mes, y los últimos dos dígitos corresponden al día. Por ejemplo, el número 20200901 representa la fecha 01/09/2020.

Para esta tarea, supondremos que los números que representan fechas siempre tienen 8  dígitos, y que el primer dígito siempre es distinto a 0 (por lo que sólo sirve para representar fechas entre el año 1000 y el año 9999).

El objetivo de esta tarea es programar un módulo con funciones que permitan trabajar con fechas en este formato. Las funciones que Ud. debe implementar son las siguientes:

  1. Función year: recibe una fecha representada como entero y devuelve un texto con el año de la fecha.
  2. Función month: recibe una fecha representada como entero y devuelve un texto con el mes de la fecha. Si el número del mes no es válido, debe devolver el texto ‘FECHA INCORRECTA’.
  3. Función monthName: recibe una fecha representada como entero y devuelve un texto con el nombre del mes, en español, de la fecha (‘enero’, ‘febrero’, . . . , ‘diciembre’). Si el número del mes no es válido, debe devolver el texto ‘FECHA INCORRECTA’.
  4. Función day: recibe una fecha representada como entero y devuelve un texto con el día de la fecha. Si el número del día no es válido (esto depende del mes, considere si el año es bisiesto para el caso de febrero) o el mes es inválido (por lo que no se puede verificar el día), debe devolver el texto ‘FECHA INCORRECTA’.
  5. Función date2Text: recibe una fecha representada como entero y devuelve un texto con la fecha completa en el formato ‘DD/MM/AAAA’. Por ejemplo, date2Text(20200903) devuelve el texto ’03/09/2020′. Si el mes o el día no son válidos, debe devolver el texto ‘FECHA INCORRECTA’.
  6. Función date2TextName: recibe una fecha representada como entero y devuelve un texto con la fecha completa en el formato ‘X de Y de Z’, usando el nombre del mes. Por ejemplo, date2Text(20200903) devuelve el texto ‘3 de septiembre de 2020’. Si el mes o el día no son válidos, debe devolver el texto ‘FECHA INCORRECTA’.
  7. Función manyDates: recibe un número con varias fechas representadas como entero (cantidad no definida a priori), y devuelve un texto con las fechas en el formato ‘DD/MM/AAAA’, con cada fecha separada por un salto de línea (carácter ‘\n’) y en el mismo orden que aparecen en el número. Por ejemplo, manyDates(2020090320200904) devuelve el texto '\n03/09/2020\n04/09/2020'. Note que después de la ´ultima fecha no hay un carácter de salto de línea , pero sí en el primer carácter del texto. Si algunas de las fechas no son válidas,  solo sus línea correspondientes deben decir ‘FECHA INCORRECTA’.
  8. Función sameDates: recibe dos parámetros, un número con varias fechas representadas como entero (cantidad no definida a priori) y una fecha representada como entero, y devuelve la cantidad de fechas iguales en el entero con varias fechas a la fecha correspondiente al segundo parámetro, pero sólo considerando el día y mes (el año puede ser distinto). Por ejemplo, sameDates(202009032021090420000903, 21000903) devuelve 2.

Funciones auxiliares

Para resolver estos ejercicios de programación en Python necesitamos algunas funciones auxiliares. Además, se solicita el uso de las mismas y también se sugiere evitar repetición de código, por lo que debemos usar métodos que hagan distintas cosas para la fecha.

Así que las auxiliares quedan así:

Solución a asignaciones

A continuación vemos la solución:

Poniendo todo junto

El código completo queda así. Recuerda que puedes invocar a las funciones desde cualquier lugar. En este caso solo estoy haciendo una prueba al final del archivo.

Puedes probarlo en este enlace.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario