python

Python | Días, horas, minutos y segundos que ha vivido una persona

Vamos a resolver un ejercicio en Python que pide la fecha de nacimiento de una persona y a partir de ella indica cuántos días, horas, minutos y segundos lleva viviendo al momento de ejecutar el script.

Para ello usaremos a datetime y haremos operaciones con fechas, algo relativamente sencillo.

Python 3 – Días horas minutos y segundos que ha vivido una persona

También vamos a usar la función divmod para convertir los segundos a horas y minutos.

Nota: el código de la captura fue ejecutado el 25 de marzo a las 11 de la noche con 30 minutos.

Imports necesarios y solicitar fecha de nacimiento

Necesitamos importar el módulo de datetime con import datetime.

Para solicitar la fecha de nacimiento de la persona se usa la función input con int para convertir la cadena a entero; se pide por separado el año, mes y día.

Las fechas y timedelta

Para crear un timedelta usamos la función datetime.datetime, le pasamos en orden el año, mes y día. Si no especificamos las horas, minutos y segundos se supone que están en cero.

Cuando ya tenemos el timedelta de la fecha de nacimiento ahora creamos un timedelta actual, es decir, la fecha y hora de hoy. Para ello usamos datetime.datetime.now().

Finalmente, para obtener la diferencia restamos:

diferencia = fecha_de_hoy - fecha_de_nacimiento

Eso dará una diferencia que tiene los días y los segundos (también los microsegundos) como se especifica en la documentación oficial.

Convertir segundos a minutos y horas

Como ya lo dije anteriormente, el timedelta no tiene horas ni minutos, solamente segundos.

Entonces usamos a divmod para convertir segundos a horas, y el sobrante lo convertimos a minutos, al final el residuo de todo ello son los segundos que restan.

Hablar es de mal gusto, muéstrame el código

Una vez explicada la solución al algoritmo no queda más que poner el código:

"""
 Crea un programa en python que solicite la fecha de nacimiento del usuario y le 
 devuelva la cantidad de días, horas, minutos y segundos que ha vivido hasta hoy.

 Nota: este programa toma la zona horaria local; si lo ejecutas en línea
 tomará la hora del servidor

 Nota 2: si no entiendes la función divmod, mira este post: 
 

 @author parzibyte
"""
import datetime
# Necesitamos el día, mes y año
dia = int(input("Día de nacimiento: "))
mes = int(input("Mes de nacimiento: "))
anio = int(input("Año de nacimiento: "))

# Crear un objeto de tipo datetime.datetime; con horas, minutos y segundos en 0
fecha_de_nacimiento = datetime.datetime(anio, mes, dia)
# Necesitamos la fecha y hora de hoy...
fecha_de_hoy = datetime.datetime.now()
# Operar como si fueran simples números
diferencia = fecha_de_hoy - fecha_de_nacimiento
# Y ahora podemos acceder a cada valor por separado ;)
# Es un objeto timedelta: https://docs.python.org/3/library/datetime.html#timedelta-objects
dias_vividos = diferencia.days
# Para los minutos y horas es distinto
segundos_vividos = diferencia.seconds
# Convertir segundos a horas y obtener sobrante
horas_vividas, segundos_vividos = divmod(segundos_vividos, 3600)
# Convertir segundos sobrantes a minutos y obtener sobrante
minutos_vividos, segundos_vividos = divmod(segundos_vividos, 60)

# Preparar un mensaje
mensaje = "Has vivido {} día(s), {} hora(s), {} minuto(s) y {} segundo(s)".format(
    dias_vividos, horas_vividas, minutos_vividos, segundos_vividos)
# Imprimirlo y listo
print(mensaje)

Cuando ya hemos calculado todo lo que requiere el algoritmo simplemente imprimimos. Falta pulir algunas cosas como los plurales pero eso es algo sencillo.

Probar código de tiempo vivido de una persona

Puedes descargar el código que dejé arriba; antes de ello asegúrate de instalar Python en Windows o en Android.

Te invito a ver más sobre:

Con eso terminamos por hoy.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Desplegar PWA creada con Vue 3, Vite y SQLite3 en Apache

Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…

7 horas hace

Arquitectura para wasm con Go, Vue 3, Pinia y Vite

En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…

8 horas hace

Vue 3 y Vite: crear PWA (Progressive Web App)

En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…

8 horas hace

Errores de Comlink y algunas soluciones

Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…

9 horas hace

Esperar promesa para inicializar Store de Pinia con Vue 3

En este artículo te voy a enseñar cómo usar un "top level await" esperando a…

9 horas hace

Solución: Apache – Server unable to read htaccess file

Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…

23 horas hace

Esta web usa cookies.