소연의_개발일지

4/24 학습내용

 

60갑자 조합으로 만들어보기

year = input("궁금한 년도를 입력하세요: ")

first = year % 10
second = year % 12

sexagenary_cycle = {
    0: ['경', '신'],
    1: ['신', '유'],
    2: ['임', '술'],
    3: ['계', '해'],
    4: ['갑', '자'],
    5: ['을', '축'],
    6: ['병', '인'],
    7: ['정', '묘'],
    8: ['무', '진'],
    9: ['기', '사'],
    10: [0, '오'],
    11: [0, '미'],
}
result = sexagenary_cycle[first][0] + sexagenary_cycle[second][1]
print(f"{year}년은 {result}년 입니다.")

 

 

for문으로 60개 출력해보기

 

계산해보니까 120가지가 나오길래..그럴 리 없어..그럴리 없어.. 하며 찾아봤더니 양의 년도는 양의년도끼리, 음의년도는 음의 년도끼리 조합한다고 한다.

그러니까 무작위 조합이라면 120갑자가 나올 수 있으나, 순서대로 하나씩 사용되는 구조이기에 짝수 천간은 짝수 천간끼리, 홀수 천간은 홀수 천간끼리 조합해야 한다.

 

나머지 0 1 2 3 4 5 6 7 8 9    
천간 갑(甲) 을(乙) 병(丙) 정(丁) 무(戊) 기(己) 경(庚) 신(辛) 임(壬) 계(癸)    
나머지 0 1 2 3 4 5 6 7 8 9 10 11
지지 자(子) 축(丑) 인(寅) 묘(卯) 진(辰) 사(巳) 오(午) 미(未) 신(申) 유(酉) 술(戌) 해(亥)

 

코드1 (2중for문)

sexagenary_cycle = {
    0: ['경', '신'],
    1: ['신', '유'],
    2: ['임', '술'],
    3: ['계', '해'],
    4: ['갑', '자'],
    5: ['을', '축'],
    6: ['병', '인'],
    7: ['정', '묘'],
    8: ['무', '진'],
    9: ['기', '사'],
    10: [0, '오'],
    11: [0, '미'],
}

count = 0
for i in range(10 + 1):
    for j in range(12):
        if (i in [1, 3, 5, 7, 9] and j % 2 != 0) or (i in [0, 2, 4, 6, 8] and j % 2 == 0):
            print(f"{i:>2}, {j:<2}: {sexagenary_cycle[i][0]}{sexagenary_cycle[j][1]}년")
            count += 1
print(count)

코드2 (range이용)

cnt = 0
for i in range(11):
    for j in range(12):
        if (i in range(0,10,2) and j % 2 != 0) or (i in range(1,10,2) and j % 2 == 0):
            print(f"{i:>2}, {j:<2}: {sexagenary_cycle[i][0]}{sexagenary_cycle[j][1]}년")
            cnt += 1
print(cnt)

 

 

 

출력결과

 0, 0 : 경신년
 0, 2 : 경술년
 0, 4 : 경자년
 0, 6 : 경인년
 0, 8 : 경진년
 0, 10: 경오년
 1, 1 : 신유년
 1, 3 : 신해년
 1, 5 : 신축년
 1, 7 : 신묘년
 1, 9 : 신사년
 1, 11: 신미년
 2, 0 : 임신년
 2, 2 : 임술년
 2, 4 : 임자년
 2, 6 : 임인년
 2, 8 : 임진년
 2, 10: 임오년
 3, 1 : 계유년
 3, 3 : 계해년
 3, 5 : 계축년
 3, 7 : 계묘년
 3, 9 : 계사년
 3, 11: 계미년
 4, 0 : 갑신년
 4, 2 : 갑술년
 4, 4 : 갑자년
 4, 6 : 갑인년
 4, 8 : 갑진년
 4, 10: 갑오년
 5, 1 : 을유년
 5, 3 : 을해년
 5, 5 : 을축년
 5, 7 : 을묘년
 5, 9 : 을사년
 5, 11: 을미년
 6, 0 : 병신년
 6, 2 : 병술년
 6, 4 : 병자년
 6, 6 : 병인년
 6, 8 : 병진년
 6, 10: 병오년
 7, 1 : 정유년
 7, 3 : 정해년
 7, 5 : 정축년
 7, 7 : 정묘년
 7, 9 : 정사년
 7, 11: 정미년
 8, 0 : 무신년
 8, 2 : 무술년
 8, 4 : 무자년
 8, 6 : 무인년
 8, 8 : 무진년
 8, 10: 무오년
 9, 1 : 기유년
 9, 3 : 기해년
 9, 5 : 기축년
 9, 7 : 기묘년
 9, 9 : 기사년
 9, 11: 기미년
60

 

 

 

코드3 (참고 코드)

ten = list("갑을병정무기경신임계")
twelve = list("자축인묘진사오미신유술해")
ten_twelve = []
for i in range(60):
    ten_twelve.append(ten[i%10] + twelve[i % 12])
print(ten_twelve)

우리반 모 천재가 두줄로 만든 코드. 

cnt = 0
for i, j in enumerate(range(60)):
    print(sexagenary_cycle[i%10][0], sexagenary_cycle[j%12][1])
    cnt += 1
print(cnt)

내가 만든 딕셔너리 사용할 수 있게 수정하기

 

 

 

코드4 : 년도를 입력한 후 알려주기

sexagenary_cycle = {
    0: ['경', '신'],
    1: ['신', '유'],
    2: ['임', '술'],
    3: ['계', '해'],
    4: ['갑', '자'],
    5: ['을', '축'],
    6: ['병', '인'],
    7: ['정', '묘'],
    8: ['무', '진'],
    9: ['기', '사'],
    10: [0, '오'],
    11: [0, '미'],
}

year = int(input("년도를 입력하세요: "))
print(f"{year}년: {sexagenary_cycle[year % 10][0]}{sexagenary_cycle[year % 12][1]}년")
 

출력결과

년도를 입력하세요: 1592
1592년: 임진년
 
 

코드5: 코드4 더 간단히 만들기

ten = list("갑을병정무기경신임계")
twelve = list("자축인묘진사오미신유술해")
ten_twelve = []
year = int(input("년도를 입력하세요: "))

ten_twelve.append(ten[year%10-4] + twelve[year % 12-4])
print(ten_twelve) #print(f"{''.join(ten_twelve)}년")

 리스트형 이용

 

출력결과

년도를 입력하세요: 1592
임진년

 

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!