Programing/PYTHON

[파이썬/python] 요일 찾기, 윤년 구하기 - jupyter notebook

바오밥 하단 2020. 4. 28. 01:09

 

년, 월, 일을 입력 받아서 요일을 구하고 윤년인지 판별한다.

 

조건

- 서기 1년 1월 1일은 월요일이다.

- 요일은 서기 1년 1월 1일부터 입력된 날까지의 날수를 모두 더한 값을 7로 나누어 나머지를 이용하여 구한다.

 

윤년을 구하는 공식

- 4로 나누어지는 해는 윤년이다.

- 100으로 나누어지는 해는 윤년이 아니다.

- 400으로 나누어지는 해는 윤년이다.

 

 

입력함수, 윤년 판별 함수, 요일을 구하는 함수로 총 3개를 만들었다.

 

요일을 구하는 함수에서 return을 할 때 파이썬에서는 switch가 없기 때문에 딕셔너리를 사용했다.

[]안의 수와 일치하는 key의 값을 return 한다.

 

ln[1]

%%writefile leapyear.py

import datetime

 

def input_date():

    y = int(input("__년도를 입력하시오: "))

    m = int(input("__월을 입력하시오: "))

    d = int(input("__일을 입력하시오: "))

    return y, m, d

 

def is_leap(num):

    if (num % 4) ==0:

        if (num % 400) == 0: 

            return True

        elif (num % 100) == 0: 

            return False

        else: 

            return True

    else: 

        return False

 

def get_day_name(year, month, day):

    dt = datetime.datetime(year, month, day)

    dt = int(dt.strftime("%j"))

    count_day = 0

    for i in range(year):

        if is_leap(i): 

            count_day += 366

        else: 

            count_day += 365

    count = (count_day + dt - 366) %  7 

    #1년 1월 1일은 0일째이지만 컴퓨터에서는 366일째로 계산되기 때문에 366을 빼줌.

    return {0: '일요일', 1: "월요일", 2: "화요일", 3: "수요일",

            4: "목요일", 5: "금요일", 6: "토요일"}[count]

 

 

if __name__ == "__main__":

    year, month, day = input_date()

    day_name = get_day_name(year, month, day)

    print(day_name)

    if is_leap(year):

        print("입력하신 %s년은 윤년입니다" % year)

    else:

        print("입력하신 %s년은 윤년이 아닙니다" % year)

cs

 

실행결과