jueves, 30 de abril de 2020

Calcular la edad de una persona con su fecha de nacimiento

En este ejemplo se explica el uso de la librería datetime de Python para manejo de fechas.

Enunciado del problema

Se requierer calcular la edad en años de una persona que ingresa su fecha de nacimiento por teclado en el formato mm/dd/aaaa es decir el día, el mes y el año.

Ejemplo:

Entrada: 31/03/2000

Salida: La edad es: 20 años

Resolución:

Para resolver este ejercicio primero importaremos datetime y date de la librería datetime de Python

from datetime import datetime
from datetime import date

Necesitamos definir la forma en la que vamos a recibir la fecha de nacimiento de la persona, para lo cual definimos una variable que contenga el formato en el que recibiremos la fecha

date_format = '%d/%m/%Y'

Ahora definiremos una variable que va a almacenar el año de la fecha actual:

now = date.today().year

Definimos la función age(stringDate) que recibirá la fecha en formato string. Como la fecha que hemos recibido es del tipo string debemos transformarla a fecha utilizando datetime, como pueden existir errores al momento de que el usuario ingrese la fecha, vamos a capturar una posible excepción mediante un bloque try-except: datetime>i se logra capturar la fecha de manera correcta, nos quedaremos con la parte solamente de la fecha llamando a la función date() y luego recuperaremos el año de la fecha de nacimiento, haciendo uso de la función strftime de datetime. El código quedaría de la siguiente manera:

def age(stringDate):
   try
     birthDay = datetime.strptime(stringDate, date_format).date()
     birthYear = int(birthDay.strftime('%Y'))
     return now - birthYear
   except:
     print("La fecha ingresada no contiene el formato requerido (dd/mm/aaaa)")
     return 0

Lo que nos faltaría es asignar en una variable la fecha en formato string que vamos a recibir por teclado, lo haremos con el siguiente código

stringDate = input('Ingrese su fecha de nacimiento (31/03/2000)\n')

Ahora para probar que funciona imprimiremos por consola un mensaje que nos indicará la edad devuelta por la función, a la que pasaremos la fecha capturada por teclado:

print(f"La edad es: {age(stringDate)} años")

El resultado de la ejecución del programa lo visualizamos en las siguientes imágenes cuando es exitoso y cuando se ha capturado la excepción respectivamente.

No hay comentarios.:

Publicar un comentario