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
임진년
'개발공부 > Python' 카테고리의 다른 글
[파이썬] 개복치 키우는 게임 만들기 (0) | 2023.04.26 |
---|---|
[파이썬] 숫자야구 함수화해서 만들기 (0) | 2023.04.26 |
(4.23) 파이썬 예외처리 공부(try except, raise) (0) | 2023.04.23 |
[파이썬] 로보77게임 만들기(순서도, 1차코드, 미완) (0) | 2023.04.22 |
[파이썬] 행맨 게임 만들기( while, random, if, isalpha(), random 활용) (0) | 2023.04.21 |