ba_gua = [
{"乾": "金"},
{"兑": "金"},
{"离": "火"},
{"震": "木"},
{"巽": "木"},
{"坎": "水"},
{"艮": "土"},
{"坤": "土"},
]
gua_xiang = [
[1, 1, 1],
[0, 1, 1],
[1, 0, 1],
[0, 0, 1],
[1, 1, 0],
[0, 1, 0],
[1, 0, 0],
[0, 0, 0],
]
time = input("起卦之年月日时:")
nian = time.split()[0]
yue = int(time.split()[1])
ri = int(time.split()[2])
shi = int(time.split()[3])
match nian:
case "子":
nian = 1
case "丑":
nian = 2
case "寅":
nian = 3
case "卯":
nian = 4
case "辰":
nian = 5
case "巳":
nian = 6
case "午":
nian = 7
case "未":
nian = 8
case "申":
nian = 9
case "酉":
nian = 10
case "戌":
nian = 11
case "亥":
nian = 12
case _:
print("!!输入有误!!")
match shi:
case 23 | 0:
shi = 1
case 1 | 2:
shi = 2
case 3 | 4:
shi = 3
case 5 | 6:
shi = 4
case 7 | 8:
shi = 5
case 9 | 10:
shi = 6
case 11 | 12:
shi = 7
case 13 | 14:
shi = 8
case 15 | 16:
shi = 9
case 17 | 18:
shi = 10
case 19 | 20:
shi = 11
case 21 | 22:
shi = 12
case _:
print("!!输入有误!!")
gua1 = (nian + yue + ri) % 8
gua2 = (nian + yue + ri + shi) % 8
if gua1 == 0:
gua1 = 8
if gua2 == 0:
gua2 = 8
if gua1 > gua2:
shang_gua = gua2
xia_gua = gua1
else:
shang_gua = gua1
xia_gua = gua2
dong_yao = (shang_gua + xia_gua) % 6
if dong_yao == 0:
dong_yao = 6
if dong_yao <= 3:
ti_gua = shang_gua
yong_gua = xia_gua
else:
ti_gua = xia_gua
yong_gua = shang_gua
print(f"\n\n\n体卦:{ba_gua[ti_gua-1]}\n用卦:{ba_gua[yong_gua-1]}")
shang_hu = []
shang_hu.append(gua_xiang[shang_gua - 1][1])
shang_hu.append(gua_xiang[shang_gua - 1][2])
shang_hu.append(gua_xiang[xia_gua - 1][0])
shang_hu_gua = gua_xiang.index(shang_hu)
xia_hu = []
xia_hu.append(gua_xiang[shang_gua - 1][2])
xia_hu.append(gua_xiang[xia_gua - 1][0])
xia_hu.append(gua_xiang[xia_gua - 1][1])
xia_hu_gua = gua_xiang.index(xia_hu)
print(f"下互卦:{ba_gua[xia_hu_gua]},上互卦:{ba_gua[shang_hu_gua]}")
bian = []
bian.append(gua_xiang[yong_gua - 1][0])
bian.append(gua_xiang[yong_gua - 1][1])
bian.append(gua_xiang[yong_gua - 1][2])
if dong_yao == 3 or dong_yao == 6:
dong_yao = 0
if dong_yao == 2 or dong_yao == 5:
dong_yao = 1
if dong_yao == 1 or dong_yao == 4:
dong_yao = 2
bian[dong_yao] = 1 - bian[dong_yao]
bian_gua = gua_xiang.index(bian)
print(f"变卦:{ba_gua[bian_gua]}")