Manejo de fechas en cualquier año

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 crear un script de Python que imprima todos los domingos de un año dado. Esta es una habilidad útil para cualquiera que necesite trabajar con fechas y tareas relacionadas con el tiempo en sus proyectos de programación.

👀 Vista previa

python Sunday.py 2022
2022-01-02
2022-01-09
2022-01-16
2022-01-23
2022-01-30
2022-02-06
2022-02-13
2022-02-20
...

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo utilizar los módulos datetime y calendar en Python para manejar fechas
  • Cómo escribir una función que calcule y devuelva una lista de todos los domingos de un año dado
  • Cómo manejar la entrada del usuario y los argumentos de línea de comandos en un script de Python
  • Cómo mejorar y personalizar el script para hacerlo más flexible y amigable para el usuario

🏆 Logros

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

  • Comprender cómo trabajar con fechas y tiempo en Python
  • Escribir un script que pueda imprimir todos los domingos de un año dado
  • Personalizar el script para manejar diferentes años y la entrada del usuario
  • Aplicar tus nuevos conocimientos a otras tareas relacionadas con fechas en tus proyectos de programación

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/arguments_return("Arguments and Return Values") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/PythonStandardLibraryGroup -.-> python/date_time("Date and Time") subgraph Lab Skills python/conditional_statements -.-> lab-302733{{"Manejo de fechas en cualquier año"}} python/arguments_return -.-> lab-302733{{"Manejo de fechas en cualquier año"}} python/standard_libraries -.-> lab-302733{{"Manejo de fechas en cualquier año"}} python/date_time -.-> lab-302733{{"Manejo de fechas en cualquier año"}} end

Crea el archivo Sunday.py

En este paso, crearás el archivo Sunday.py y configurarás la estructura inicial del script.

  1. Crea un archivo Sunday.py en el directorio ~/project.
cd ~/project
touch Sunday.py
  1. Agrega el siguiente código al archivo:
import datetime
import sys


## Función para imprimir todos los domingos de un año dado
def print_sundays(year):
    sundays = []  ## Lista para almacenar los domingos
    date = datetime.date(year, 1, 1)  ## Comienza con el 1 de enero del año dado
    delta = datetime.timedelta(days=1)  ## Define un timedelta de 1 día

    ## Encuentra el primer domingo del año
    while date.weekday()!= 6:  ## 6 representa domingo (lunes es 0 y domingo es 6)
        date += delta  ## Avanza al siguiente día

    ## Imprime todos los domingos del año
    while date.year == year:  ## Bucle hasta que el año cambie
        sundays.append(
            date.strftime("%Y-%m-%d")
        )  ## Agrega el domingo a la lista (formateado como AAAA-MM-DD)
        date += datetime.timedelta(
            weeks=1
        )  ## Avanza al siguiente domingo (incrementa en 1 semana)

    return sundays  ## Devuelve la lista de domingos


## Lee el año del argumento de línea de comandos
if len(sys.argv) > 1:
    year = int(sys.argv[1])  ## Convierte el argumento de línea de comandos a un entero
    sundays = print_sundays(year)  ## Llama a la función para obtener la lista de domingos
    for sunday in sundays:
        print(sunday)  ## Imprime cada domingo
else:
    print(
        "Please provide a year as a command-line argument."
    )  ## Muestra un mensaje de error si no se proporciona un año

Este código configura la estructura básica del script Sunday.py, incluyendo la función print_sundays() y el manejo de argumentos de línea de comandos.

Entiende el código

En este paso, entenderás el propósito y la funcionalidad del código en el archivo Sunday.py.

  1. La función print_sundays() toma un parámetro year y devuelve una lista de todos los domingos de ese año.
  2. La función comienza creando un objeto datetime.date con el year dado y el primer día del año (1 de enero).
  3. Luego, encuentra el primer domingo del año iterando a través de los días hasta que el día de la semana sea 6 (domingo).
  4. Una vez que se encuentra el primer domingo, la función entra en un bucle que continúa hasta el final del año. En cada iteración, agrega el domingo actual a la lista sundays y se mueve al siguiente domingo (sumando un timedelta de 1 semana).
  5. Finalmente, la función devuelve la lista de domingos.
  6. La parte principal del script lee el año del argumento de línea de comandos y llama a la función print_sundays() con el año proporcionado. Luego, imprime cada domingo de la lista.
  7. Si no se proporciona un argumento de línea de comandos, el script muestra un mensaje de error.

Ejecuta el script

En este paso, ejecutarás el script Sunday.py y observarás la salida.

  1. Abre una terminal y navega hasta el directorio /home/labex/project.
  2. Ejecuta el script Sunday.py con un año específico como argumento de línea de comandos:
python Sunday.py 2022

Deberías ver la siguiente salida:

2022-01-02
2022-01-09
2022-01-16
2022-01-23
2022-01-30
2022-02-06
2022-02-13
2022-02-20
2022-02-27
2022-03-06
2022-03-13
2022-03-20
2022-03-27
2022-04-03
2022-04-10
2022-04-17
2022-04-24
2022-05-01
2022-05-08
2022-05-15
2022-05-22
2022-05-29
2022-06-05
2022-06-12
2022-06-19
2022-06-26
2022-07-03
2022-07-10
2022-07-17
2022-07-24
2022-07-31
2022-08-07
2022-08-14
2022-08-21
2022-08-28
2022-09-04
2022-09-11
2022-09-18
2022-09-25
2022-10-02
2022-10-09
2022-10-16
2022-10-23
2022-10-30
2022-11-06
2022-11-13
2022-11-20
2022-11-27
2022-12-04
2022-12-11
2022-12-18
2022-12-25

La salida muestra todos los domingos del año 2022.

✨ Revisar Solución y Practicar

Resumen

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