어떤 연도든 날짜 처리하기

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 주어진 연도의 모든 일요일을 출력하는 Python 스크립트를 만드는 방법을 배우게 됩니다. 이는 프로그래밍 프로젝트에서 날짜 및 시간 관련 작업을 처리해야 하는 모든 사람에게 유용한 기술입니다.

👀 미리보기

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

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다.

  • Python 에서 날짜를 처리하기 위해 datetimecalendar 모듈을 사용하는 방법
  • 주어진 연도의 모든 일요일 목록을 계산하고 반환하는 함수를 작성하는 방법
  • Python 스크립트에서 사용자 입력 및 명령줄 인수를 처리하는 방법
  • 스크립트를 향상시키고 사용자 정의하여 더욱 유연하고 사용자 친화적으로 만드는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다.

  • Python 에서 날짜 및 시간 작업 방식을 이해합니다.
  • 주어진 연도의 모든 일요일을 출력할 수 있는 스크립트를 작성합니다.
  • 다른 연도와 사용자 입력을 처리하도록 스크립트를 사용자 정의합니다.
  • 프로그래밍 프로젝트에서 날짜 관련 다른 작업에 새롭게 얻은 지식을 적용합니다.

Sunday.py 파일 생성

이 단계에서는 Sunday.py 파일을 생성하고 스크립트의 초기 구조를 설정합니다.

  1. ~/project 디렉토리에 Sunday.py 파일을 생성합니다.
cd ~/project
touch Sunday.py
  1. 파일에 다음 코드를 추가합니다.
import datetime
import sys


## 주어진 연도의 모든 일요일을 출력하는 함수
def print_sundays(year):
    sundays = []  ## 일요일을 저장할 리스트
    date = datetime.date(year, 1, 1)  ## 주어진 연도의 1 월 1 일로 시작
    delta = datetime.timedelta(days=1)  ## 1 일의 timedelta 정의

    ## 해당 연도의 첫 번째 일요일 찾기
    while date.weekday() != 6:  ## 6 은 일요일을 나타냅니다 (월요일은 0, 일요일은 6)
        date += delta  ## 다음 날짜로 이동

    ## 해당 연도의 모든 일요일 출력
    while date.year == year:  ## 연도가 변경될 때까지 루프
        sundays.append(
            date.strftime("%Y-%m-%d")
        )  ## 일요일을 리스트에 추가 (YYYY-MM-DD 형식)
        date += datetime.timedelta(
            weeks=1
        )  ## 다음 일요일로 이동 (1 주씩 증가)

    return sundays  ## 일요일 목록 반환


## 명령줄 인수로 연도 읽기
if len(sys.argv) > 1:
    year = int(sys.argv[1])  ## 명령줄 인수를 정수로 변환
    sundays = print_sundays(year)  ## 함수를 호출하여 일요일 목록 가져오기
    for sunday in sundays:
        print(sunday)  ## 각 일요일 출력
else:
    print(
        "Please provide a year as a command-line argument."
    )  ## 연도가 제공되지 않은 경우 오류 메시지 표시

이 코드는 print_sundays() 함수와 명령줄 인수 처리를 포함하여 Sunday.py 스크립트의 기본 구조를 설정합니다.

코드 이해하기

이 단계에서는 Sunday.py 파일의 코드의 목적과 기능을 이해합니다.

  1. print_sundays() 함수는 year 매개변수를 받아 해당 연도의 모든 일요일 목록을 반환합니다.
  2. 함수는 주어진 year와 연도의 첫 번째 날 (1 월 1 일) 로 datetime.date 객체를 생성하는 것으로 시작합니다.
  3. 그런 다음 요일이 6(일요일) 이 될 때까지 날짜를 반복하여 해당 연도의 첫 번째 일요일을 찾습니다.
  4. 첫 번째 일요일을 찾으면 함수는 연말까지 계속되는 루프에 들어갑니다. 각 반복에서 현재 일요일을 sundays 리스트에 추가하고 다음 일요일로 이동합니다 (1 주의 timedelta 를 더하여).
  5. 마지막으로 함수는 일요일 목록을 반환합니다.
  6. 스크립트의 주요 부분은 명령줄 인수에서 연도를 읽고 제공된 연도로 print_sundays() 함수를 호출합니다. 그런 다음 목록의 각 일요일을 출력합니다.
  7. 명령줄 인수가 제공되지 않으면 스크립트는 오류 메시지를 표시합니다.

스크립트 실행

이 단계에서는 Sunday.py 스크립트를 실행하고 출력을 관찰합니다.

  1. 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.
  2. 특정 연도를 명령줄 인수로 사용하여 Sunday.py 스크립트를 실행합니다.
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
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

출력은 2022 년의 모든 일요일을 보여줍니다.

요약

축하합니다! 이 프로젝트를 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습