# 필요한 라이브러리 설치
!pip install korean-lunar-calendar
# 천간 지지
heavenly_stems = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
earthly_branches = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
from datetime import date
from korean_lunar_calendar import KoreanLunarCalendar
def calculate_60_ganji(year, month, day):
"""
그레고리력 날짜에 기반한 60갑자 계산 함수
"""
input_date = date(year, month, day)
reference_date = date(2024, 4, 9) # 기준일 '계묘(癸卯)'
reference_heavenly_stem = 9
reference_earthly_branch = 3
day_difference = (input_date - reference_date).days
heavenly_stem_index = (reference_heavenly_stem + day_difference) % 10
earthly_branch_index = (reference_earthly_branch + day_difference) % 12
ganji_cycle = heavenly_stems[heavenly_stem_index] + earthly_branches[earthly_branch_index]
return ganji_cycle
def get_60_ganji_for_lunar_date(year, month, day, leap_month):
"""
음력 날짜에 해당하는 60갑자를 계산하는 함수
"""
calendar = KoreanLunarCalendar()
calendar.setLunarDate(year, month, day, leap_month)
solar_date = calendar.SolarIsoFormat().split('-')
return calculate_60_ganji(int(solar_date[0]), int(solar_date[1]), int(solar_date[2]))
try:
# 입력 받기
year = int(input("음력 연도를 입력하세요: "))
month = int(input("음력 월을 입력하세요: "))
day = int(input("음력 일을 입력하세요: "))
leap_month = input("윤달이면 '네'를, 아니면 그냥 엔터를 치세요: ").strip().lower() == '네'
# 입력받은 연도에 해당하는 일진
print(f"{year}년의 60갑자: {get_60_ganji_for_lunar_date(year, 1, 1, False)}")
# 입력받은 음력 월의 첫째 날에 대한 일진
print(f"{year}년 {month}월 첫째 날의 60갑자: {get_60_ganji_for_lunar_date(year, month, 1, leap_month)}")
# 입력받은 음력 날짜에 해당하는 일진
print(f"{year}년 {month}월 {day}일의 60갑자: {get_60_ganji_for_lunar_date(year, month, day, leap_month)}")
except ValueError:
print("잘못된 입력입니다. 연도, 월, 일을 정확히 입력해주세요.")
except Exception as e:
print(f"예상치 못한 오류가 발생했습니다: {e}")
이 코드는 음력 날짜를 입력받아 해당 날짜의 60갑자 (60甲子)를 계산하는 프로그램입니다. 60갑자는 동아시아 전통에서 시간을 나타내는 방식 중 하나로, 천간(10天干)과 지지(12地支)의 조합으로 이루어진 60가지의 조합을 말합니다. 이 코드는 사용자로부터 음력 연도, 월, 일, 그리고 윤달 여부를 입력받아 해당하는 그레고리력 날짜의 60갑자를 계산합니다.
이 프로그램은 전통적인 동아시아 시간 체계를 기반으로 하며, 특히 음력 날짜에 대한 60갑자를 계산하는 데 유용합니다. 이를 통해 사용자는 특정 음력 날짜가 어떤 60갑자에 해당하는지 쉽게 알아볼 수 있습니다.
파이썬 코드로 작성이 됨
실행시 결과 값이다.
이거 3가지만 복사해서 넣으면 더 이상 할 게 없다.
아버지가 나를 시키는데 난 그냥 깔딱만 할꺼다.
'일상의 잡다한' 카테고리의 다른 글
숫자야구 솔버 0포함 3자리 (0) | 2024.05.20 |
---|---|
숫자야구 볼 판정 코드를 작성해 봤음 (1) | 2024.03.19 |
숫자야구 솔버 3자리 파이썬 0-9 사용 (0) | 2024.03.16 |
숫자야구가 생각나서 (0) | 2024.03.16 |
로스트아크 - 우리 마을 골목 대장 숨은 아이 찾기 (0) | 2024.02.29 |