소개
이 프로젝트에서는 주어진 연도의 모든 일요일을 출력하는 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 에서 날짜를 처리하기 위해
datetime및calendar모듈을 사용하는 방법 - 주어진 연도의 모든 일요일 목록을 계산하고 반환하는 함수를 작성하는 방법
- Python 스크립트에서 사용자 입력 및 명령줄 인수를 처리하는 방법
- 스크립트를 향상시키고 사용자 정의하여 더욱 유연하고 사용자 친화적으로 만드는 방법
🏆 성과
이 프로젝트를 완료하면 다음을 수행할 수 있습니다.
- Python 에서 날짜 및 시간 작업 방식을 이해합니다.
- 주어진 연도의 모든 일요일을 출력할 수 있는 스크립트를 작성합니다.
- 다른 연도와 사용자 입력을 처리하도록 스크립트를 사용자 정의합니다.
- 프로그래밍 프로젝트에서 날짜 관련 다른 작업에 새롭게 얻은 지식을 적용합니다.
Sunday.py 파일 생성
이 단계에서는 Sunday.py 파일을 생성하고 스크립트의 초기 구조를 설정합니다.
~/project디렉토리에Sunday.py파일을 생성합니다.
cd ~/project
touch Sunday.py
- 파일에 다음 코드를 추가합니다.
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 파일의 코드의 목적과 기능을 이해합니다.
print_sundays()함수는year매개변수를 받아 해당 연도의 모든 일요일 목록을 반환합니다.- 함수는 주어진
year와 연도의 첫 번째 날 (1 월 1 일) 로datetime.date객체를 생성하는 것으로 시작합니다. - 그런 다음 요일이 6(일요일) 이 될 때까지 날짜를 반복하여 해당 연도의 첫 번째 일요일을 찾습니다.
- 첫 번째 일요일을 찾으면 함수는 연말까지 계속되는 루프에 들어갑니다. 각 반복에서 현재 일요일을
sundays리스트에 추가하고 다음 일요일로 이동합니다 (1 주의 timedelta 를 더하여). - 마지막으로 함수는 일요일 목록을 반환합니다.
- 스크립트의 주요 부분은 명령줄 인수에서 연도를 읽고 제공된 연도로
print_sundays()함수를 호출합니다. 그런 다음 목록의 각 일요일을 출력합니다. - 명령줄 인수가 제공되지 않으면 스크립트는 오류 메시지를 표시합니다.
스크립트 실행
이 단계에서는 Sunday.py 스크립트를 실행하고 출력을 관찰합니다.
- 터미널을 열고
/home/labex/project디렉토리로 이동합니다. - 특정 연도를 명령줄 인수로 사용하여
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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.



