编辑代码

dizhi = [
    {"寅": "木"},
    {"卯": "木"},
    {"辰": "土"},
    {"巳": "火"},
    {"午": "火"},
    {"未": "土"},
    {"申": "金"},
    {"酉": "金"},
    {"戌": "土"},
    {"亥": "水"},
    {"子": "水"},
    {"丑": "土"},
]
wuxing = ["水", "火", "木", "金", "土"]

# 获取月日时
time = input("起课之月日时:")
yue = int(time.split()[0])
ri = int(time.split()[1])
shi = int(time.split()[2])

# 计算月支
yue_zhi = dizhi[yue - 1]
# 计算日支
ri_zhi = dizhi[(yue + ri - 2) % 12]
# 计算时支
match shi:
    case 23 | 0:
        shi_zhi = dizhi[10]
    case 1 | 2:
        shi_zhi = dizhi[11]
    case 3 | 4:
        shi_zhi = dizhi[0]
    case 5 | 6:
        shi_zhi = dizhi[1]
    case 7 | 8:
        shi_zhi = dizhi[2]
    case 9 | 10:
        shi_zhi = dizhi[3]
    case 11 | 12:
        shi_zhi = dizhi[4]
    case 13 | 14:
        shi_zhi = dizhi[5]
    case 15 | 16:
        shi_zhi = dizhi[6]
    case 17 | 18:
        shi_zhi = dizhi[7]
    case 19 | 20:
        shi_zhi = dizhi[8]
    case 21 | 22:
        shi_zhi = dizhi[9]
    case _:
        print("!!输入有误!!")

# 下之体
ti = shi_zhi
# 上之用
if dizhi.index(shi_zhi) >= dizhi.index(ri_zhi):
    num = dizhi.index(shi_zhi) - dizhi.index(ri_zhi)
else:
    num = dizhi.index(shi_zhi) + 12 - dizhi.index(ri_zhi)
yong = wuxing[num % 5]

# 计算旺衰
match yue:
    case 1 | 2:
        wangshuai = {"水": "休→", "火": "相↗", "木": "旺↑", "金": "囚↘", "土": "死↓"}
    case 4 | 5:
        wangshuai = {"水": "囚↘", "火": "旺↑", "木": "休→", "金": "死↓", "土": "相↗"}
    case 7 | 8:
        wangshuai = {"水": "相↗", "火": "囚↘", "木": "死↓", "金": "旺↑", "土": "休→"}
    case 10 | 11:
        wangshuai = {"水": "旺↑", "火": "死↓", "木": "相↗", "金": "休→", "土": "囚↘"}
    case 3 | 6 | 9 | 12:
        wangshuai = {"水": "死↓", "火": "休→", "木": "囚↘", "金": "相↗", "土": "旺↑"}
    case _:
        print("!!输入有误!!")
wangshuai_yong = wangshuai[yong]
wangshuai_ti = wangshuai[list(ti.values())[0]]

print("\n\n")
print(f"用为:{yong},{wangshuai_yong}")
print(f"体为:{ti},{wangshuai_ti}")
# print(f"当月旺衰:{wangshuai}")
print("\n\n")