[Python] 纯文本查看 复制代码
import math
# 定义六宫
liugong = ['大安', '留连', '速喜', '赤口', '小吉', '空亡']
# 手动输入月、日、时
month = int(input('请输入月份(1-12):'))
day = int(input('请输入日期(1-31):'))
hour = int(input('请输入时间(0-23):'))
# 定义十二地支
dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
# 定义24小时分别对应的十二地支
hour_dizhi = ['子', '丑', '丑', '寅', '寅', '卯', '卯', '辰', '辰', '巳', '巳', '午', '午', '未', '未', '申', '申', '酉', '酉', '戌', '戌', '亥', '亥', '子']
# 判断时宫对应的地支属于阴或阳
if hour % 2 == 0:
hour_dizhi_index = hour // 2
yinyang = '阳'
else:
hour_dizhi_index = (hour + 1) // 2
yinyang = '阴'
# 地支若阴逆时针排列至六宫,地支若阳顺时针排列至六宫
if yinyang == '阴':
liugong_start_index = (dizhi.index(hour_dizhi[hour_dizhi_index]) + 1) % 12
else:
liugong_start_index = (dizhi.index(hour_dizhi[hour_dizhi_index]) - 1) % 12
liugong_ordered = dizhi[liugong_start_index:] + dizhi[:liugong_start_index]
# 定义五行
wuxing = {'木': ['寅', '卯'], '火': ['巳', '午'], '土': ['丑', '辰', '戌'], '金': ['申', '酉'], '水': ['亥', '子']}
# 判断所在地支属于哪种五行
for key in wuxing:
if dizhi[liugong_ordered.index('子')] in wuxing[key]:
wuxing_type = key
break
# 输出结果
print('六宫依次为:', end='')
for index, value in enumerate(liugong):
print(value + '(' + liugong_ordered[index] + ')', end=',')
print('\n所在时辰为', hour_dizhi[hour_dizhi_index] + yinyang + '时,属于', wuxing_type + ',对应', liugong_ordered.index(hour_dizhi[hour_dizhi_index]) + 1, '号宫。')