輸出結果見:https://tieba.baidu.com/p/5979125650
規律:
節氣上元首局爲所在宮位
同宮節氣依次+1(陰遁-1)
每元首局爲上個元的結尾再+1(陰遁-1)
import sys
JieQi=["冬至","小寒","大寒","立春","雨水","驚蟄","春分","清明","穀雨","立夏","小滿","芒種",
"夏至","小暑","大暑","立秋","處暑","白露","秋分","寒露","霜降","立冬","小雪","大雪"];
SanYuan=["上元","中元","下元"];
JiuGong=[1,8,3,4,9,2,7,6];#每三個節氣在一個宮內,此爲順時針旋轉後天八卦的九宮數
gan1 = ["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"];
zhi1 = ["子","醜","寅","卯","辰","巳","午","未","申","酉","戌","亥"];
'''
陽遁:
冬至、驚蟄一七四,小寒二八五,
大寒、春分三九六,雨水九六三,
清明、立夏四一七,立春八五二,
穀雨、小滿五二八,芒種六三九。
陰遁:
夏至、白露九三六,小暑八二五,
大暑、秋分七一四,立秋二五八,
寒露、立冬六九三,處暑一四七,
霜降、小雪五八二,大雪四七一。
'''
'''
甲子順於總數,局數始於宮(節氣),遁旋通元(三元)而得
局首爲戊,遁飛得落宮(值使),找旬首(值符)
'''
#24節氣*3元(1元5天)*5天*12時辰=360天的時辰數
#
#5天*12時辰=60時辰,一元60甲子
#60時辰%9宮=6,@一元銜接跳6
YinYangDun=1;#1陽遁,-1陰遁
sum=0;
sum1=0;
JuShu=0;#元,首局第幾局
JuShu2=0;
print("所有0代表9");
#一年有二十四節氣【a】
for a in range(24):
if a<12 : #陰陽遁【YinYangDun】
YinYangDun=1;#陽遁
else :
YinYangDun=-1;#陰遁
print("\n\n========"+JieQi[a]); #節氣【a】
#首局=【查表得宮】+餘數(第一節氣、第二節氣、第三節氣)
ShouJu= (JiuGong[a//3]+ (a%3)*YinYangDun )%9 ;
print("節氣上元首局:"+ str(ShouJu)); #節氣首局【ShouJu】:冬至1,小寒2,大寒3
#一個節氣有三元【b】
for b in range(3):
print("\n----"+SanYuan[b]); #三元【b】顯示,上中下
JuShu= (ShouJu + sum1)%9;#節氣的局,節氣內三元的局
print("第"+ str(JuShu) +"局");#一元之內 #三元首局【JuShu】
#----六十甲子----
#一元有五天【c】
JuShu2=JuShu; #以旬首局數始【JuShu2】,局內落宮
for c in range(5):#[0,4]
#每天有十二時辰
#print("第"+str(c)+"天開始");
for d in range(12):
#e1=((c-1)*12+(d-1))%10;#天干序號-1(數組從0開始)
#e2=((c-1)*12+(d-1))%12;#地支序號-1
e1=(sum%10); #其實幹支是順着局數一直下來的
e2=(sum%12);
if e1==0 : print("--"+str((c*12+(d+1))//10 +1)+"旬開始--"); #旬首(10個一次)
print(gan1[e1]+zhi1[e2]+ ",落宮:"+ str((JuShu2)%9)); #顯示時辰,"精確到當前時辰"
JuShu2+=YinYangDun*1;
sum1+=YinYangDun*1;
sum+=1; #總數
print(sum);