human
I am working on the file "Python 복습/08일차.금_정규표현식, class, 크롤링, 숙제/8일차_1T,3T_정규 표현식_이메일, 핸드폰 번호, Class_.ipynb".
The first task is:
예제: 달력
Can you write Python program for it?
assistant
#Here is the Python program you requested.

import functools

class Calendar():
    
    __days = {
        1: 31,
        2: 28,
        3: 31,
        4: 30,
        5: 31,
        6: 30,
        7: 31,
        8: 31,
        9: 30,
        10: 31,
        11: 30,
        12: 31,
    }
    
    @staticmethod
    def is_leap(year):
        return\
            year % 4 == 0\
            and not year % 100 == 0\
            or year % 400 == 0
        
    @staticmethod
    def days_in(year):
        days = Calendar.__days.copy()
        
        # days 라는 새로운 변수 => Calendar.__days 를 가리키고 있는 애 
        # 우리가 의도한 바 : 기존의 애를 복사하는 것
        
        days[2] += int(Calendar.is_leap(year))  # True => 1, 
                                                # False => 0
        return days
    
    @staticmethod
    def total_days_in(year):
        return functools.reduce(
            lambda x,y: x+y,
            Calendar.days_in(year).values(),
        )
        
    
    @staticmethod
    def total_days_until(year):
#         total_days = 0
#         for i in range(1900, year):
#             total_days += Calendar.total_days_in(i)
#         return total_days
        return functools.reduce(
            lambda x,y: x+y,
            [
                Calendar.total_days_in(i)
                for i
                in range(1900, year)  
            ]
        )
        
        
    # 1년 1월 1일 부터 특정 년도 까지의 day 수 합계를 구하시오.
    # 예, 1년 1월 1일 부터 2년 1월 1일 => 365
    #     1년 1월 1일 부터 3년 1월 1일 => 365 * 2
    # 하는 이유: day 수 합계 % 7 ==> 요일 ( 1년 1월 1일이 월요일 입니다 )

Calendar.total_days_until(1905)

Calendar.days_in(2016)