用python生成奇門遁甲的360天的每個時辰及落宮

輸出結果見: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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章