Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- harkerrank
- 파이썬 철저 입문
- Cluster
- 텍스트 분석
- 스파르타
- 웹 스크랩핑
- 내일배움캠프
- 프로젝트
- 실전 데이터 분석 프로젝트
- 파이썬 완벽 가이드
- 회귀분석
- wil
- 파이썬
- 중회귀모형
- TiL
- SQL
- 프로그래머스
- 스파르타 코딩
- 파이썬 철저입문
- 스파르타코딩
- 내일배움카드
- MySQL
- hackerrank
- 오블완
- 내일배움
- 파이썬 머신러닝 완벽가이드
- 미세먼지
- R
- 티스토리챌린지
- 파이썬 머신러닝 완벽 가이드
Archives
- Today
- Total
OkBublewrap
📅 달력 만들기 본문
패키지 사용 - calendar
import calendar
from datetime import datetime
# 현재 연도와 월 가져오기
today = datetime.today()
year = today.year
month = today.month
# 이번 달 달력 출력
print(calendar.month(year, month))
직접 구현
- 윤년 판별 함수
- 마지막 날짜 계산
- 지나온 날짜 계산
- 요일 반환
- 달력 확인
1. 윤년 판별 함수
04. 윤년 구하기
[TOC] # 윤년 구하기 레오는 달력을 보다가 2020년에는 2월 29일이 있었는데 2021년에는 2월 29일이 없는 것이 신기했습니다. 다빈이에게 물어보니 윤년이라는 것을 …
wikidocs.net
윤년의 규칙
- 4로 나누어떨어지는 해는 윤년으로 한다 (2016년, 2020년, 2024년 등등)
- 4와 100으로 나누어떨어지는 해는 평년으로 한다 (1900년, 2100년, 2200년)
- 4, 100, 400으로 나누어떨어지는 해는 윤년으로 한다 (2000년, 2400년)
➜ 4로 나누어떨어지고 그리고 100으로 나누어떨어지지 않으면 윤년이다.
➜ 400으로 나누어떨어지면 윤년이다.
# 윤년이면 True, 아니면 False를 출력하는 함수
def isLeapYear(year):
return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
isLeapYear(2024)
# True
isLeapYear(2025)
# False
2. 마지막 날짜 계산
def lastDay(year, month):
m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
# 2월 마지막 날짜 윤년일 경우 29일로
if isLeapYear(year):
m[1] = 29
return m[month - 1] # 마지막 날짜 리턴
lastDay(2024, 2)
# 29
3. 지나온 날짜 계산
1년 1월 1일 부터 지난 날짜 누적 합계 계산
- 평년을 기준으로 전년도까지 일자 합계 ➜ 윤년이었던 횟수 더하기
- 전달까지 해당 연도 일자 더하기
- 이번달 날짜 더하기
def totalDay(year, month, day):
"""
1년 1월 1일부터 주어진 날짜까지의 총 누적 일수를 계산하는 함수.
"""
# 1. 전년도(1년 ~ year-1)까지의 일수 계산
# - 기본: 365일 × (year - 1)
# - 윤년 보정: + (4년마다 하루) - (100년마다 제외) + (400년마다 다시 윤년)
total = (year - 1) * 365
total += (year - 1) // 4
total -= (year - 1) // 100
total += (year - 1) // 400
# 2. 올해의 1월부터 전달까지의 일수 누적
for m in range(1, month):
total += lastDay(year, m)
# 3. 이번 달 day만큼 더해서 총 누적 일수 반환
return total + day
totalDay(2025, 4, 13)
# 739354
4. 요일 반환
weekDay 인수로 년, 월, 일을 넘겨받아 요일을 계산해 숫자로 리턴하는 함수
1년 1월 1일 부터 인수로 넘겨받은 년, 월, 일 까지 지난 날짜의 합계를 7로 나눈 나머지 반환
일요일(0), 토요일(6)
def weekDay(year, month, day):
return totalDay(year, month, day) % 7
weekDay(2025, 4, 13) # 일요일
# 0
5. 달력 확인
# 달력 프로그램 도입부
year, month = map(int, input('달력을 출력할 년, 월을 입력하세요 : ').split())
print('=' * 28)
print(' {0:4d}년{1:2d}월'.format(year, month))
print('=' * 28)
print(' 일 월 화 수 목 금 토 ')
print('=' * 28)
# 1일이 출력될 요일 위치 맞추기
for i in range(weekDay(year, month, 1)):
print(' ', end = '')
# 1일 부터 마지막 날짜까지 반복
for i in range(1, lastDay(year, month) + 1):
print(' {0:2d} '.format(i), end = '')
if weekDay(year, month, i) == 6 and i != lasyDay(year, month):
print()
print('\n' + '=' * 28)
부가
dateutil
- parse 함수를 통해 자동으로 날짜 형식을 찾아서 datetime 객체로 변환함
from dateutil.parser import parse
data = '2025-04-13'
parse(date)
# 자동 형식 탐지
parse('Oct 15, 2022 04:05:32 PM")
# 날짜 문자열 자동 탐지
log = "INFO 2022-01-01T00:00:01 New Year!!"
parse(log, fuzzy=True)
'Python > 학습용' 카테고리의 다른 글
🔒 암호화 (0) | 2025.04.19 |
---|---|
🐍 Python 파일 및 디렉터리 처리 완전 정복 (0) | 2025.04.12 |
LLM - Fine-Tuning (0) | 2025.03.21 |
추천시스템 (3): 협업필터링 실습 (0) | 2025.03.21 |
추천시스템 (2): 협업필터링 (0) | 2025.03.21 |