Calculadora de destino del viaje en el tiempo

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este proyecto, aprenderás a construir una calculadora de destinos de viajes al tiempo utilizando Python. Esta calculadora te ayudará a determinar las fechas máximas del pasado y del futuro a las que puede llegar una nave espacial de viajes al tiempo, basándose en la fecha actual y la cantidad estimada de días que puede viajar la nave.

👀 Vista previa

## Entrada:

## Salida:

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo extraer información de fecha de una cadena dada
  • Cómo calcular las fechas del pasado y del futuro basadas en la cantidad dada de días
  • Cómo formatear las fechas calculadas y devolverlas como una lista de cadenas

🏆 Logros

Después de completar este proyecto, podrás:

  • Comprender cómo trabajar con fechas y timedelta en Python
  • Implementar una función para calcular el destino del viaje al tiempo
  • Manejar excepciones y casos límite en tu código
  • Escribir código Python limpio y mantenible

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/PythonStandardLibraryGroup -.-> python/date_time("Date and Time") subgraph Lab Skills python/type_conversion -.-> lab-302782{{"Calculadora de destino del viaje en el tiempo"}} python/function_definition -.-> lab-302782{{"Calculadora de destino del viaje en el tiempo"}} python/catching_exceptions -.-> lab-302782{{"Calculadora de destino del viaje en el tiempo"}} python/date_time -.-> lab-302782{{"Calculadora de destino del viaje en el tiempo"}} end

Extraer información de fecha

En este paso, aprenderás a extraer el año, el mes y el día de la cadena de tiempo de entrada.

  1. Abra el archivo time_travel_destination.py en su editor de código preferido.
  2. Localice la función time_travel_destination(time: str, days: int).
  3. Dentro de la función, agregue el siguiente código para extraer el año, el mes y el día del parámetro time:
try:
    ## Extraer año, mes y día de la cadena de tiempo
    year, month, day = map(int, time.split("-"))
## except (ValueError, OverflowError):
##     ## Si se produce un ValueError o OverflowError, devolver una lista vacía
##     return []

Esta línea utiliza la función map() y el método split() para convertir la cadena time en una lista de enteros que representan el año, el mes y el día.

  1. A continuación, debe comprobar si la fecha extraída es válida. Puede utilizar la función datetime.date() para hacer esto:
## Extraer año, mes y día de la cadena de tiempo
year, month, day = map(int, time.split("-"))
## Comprobar si la fecha es válida
datetime.date(year, month, day)

Si la fecha es válida, esta línea no generará ninguna excepción. Si la fecha es inválida, se generará un ValueError.

Calcular las fechas del pasado y del futuro

En este paso, aprenderás a calcular las fechas del pasado y del futuro basadas en la cantidad dada de días.

  1. Dentro de la función time_travel_destination(time: str, days: int), agregue el siguiente código para calcular las fechas del pasado y del futuro:
try:
    past_time = datetime.date(year, month, day) - datetime.timedelta(days=days)
except OverflowError:
    past_time = datetime.date(1, 1, 1)
future_time = datetime.date(year, month, day) + datetime.timedelta(days=days)

La variable past_time se calcula restando el parámetro days a la fecha original. Sin embargo, si la fecha resultante es anterior a la fecha mínima representable (1 de enero de 1 d.C.), se generará un OverflowError. En este caso, establecemos past_time en la fecha mínima representable.

La variable future_time se calcula sumando el parámetro days a la fecha original.

Formatear y devolver los resultados

En este paso, aprenderás a formatear las fechas del pasado y del futuro y a devolverlas como una lista de cadenas.

  1. Dentro de la función time_travel_destination(time: str, days: int), agregue el siguiente código para formatear las fechas del pasado y del futuro y devolverlas como una lista:
return [past_time.strftime("%d-%m-%Y"), future_time.strftime("%d-%m-%Y")]

El método strftime() se utiliza para formatear los objetos datetime.date de past_time y future_time en cadenas con el formato "dd-mm-yyyy".

  1. Finalmente, agregue un bloque de manejo de excepciones para capturar cualquier excepción ValueError o OverflowError que pueda ocurrir durante la ejecución de la función:
except (ValueError, OverflowError):
    return []

Si se produce alguna de estas excepciones, la función devolverá una lista vacía.

Su función time_travel_destination(time: str, days: int) final debería verse así:

import datetime

def time_travel_destination(time: str, days: int):
    try:
        ## Extraer año, mes y día de la cadena de tiempo
        year, month, day = map(int, time.split("-"))
        ## Comprobar si la fecha es válida
        datetime.date(year, month, day)
        try:
            ## Restar el número especificado de días a la fecha dada
            past_time = datetime.date(year, month, day) - datetime.timedelta(days=days)
        except OverflowError:
            ## Si se produce un OverflowError, establecer past_time en la fecha mínima representable
            past_time = datetime.date(1, 1, 1)
        ## Sumar el número especificado de días a la fecha dada
        future_time = datetime.date(year, month, day) + datetime.timedelta(days=days)
        ## Devolver las fechas del pasado y del futuro en el formato 'dd-mm-yyyy'
        return [past_time.strftime("%d-%m-%Y"), future_time.strftime("%d-%m-%Y")]
    except (ValueError, OverflowError):
        ## Si se produce un ValueError o OverflowError, devolver una lista vacía
        return []

Ya has completado la implementación de la función time_travel_destination(time: str, days: int). Puedes probar la función ejecutando los ejemplos proporcionados en el bloque principal del archivo time_travel_destination.py. A continuación se proporcionan algunos ejemplos:

  • Entrada:
print(time_travel_destination('2238-2-11', 30))
print(time_travel_destination('2238-2-11', 0))
print(time_travel_destination('2238-2-11', 100))
  • Salida:
['12-01-2238', '13-03-2238']
['11-02-2238', '11-02-2238']
['03-11-2237', '22-05-2238']
✨ Revisar Solución y Practicar

Resumen

¡Felicidades! Has completado este proyecto. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.