奇门遁甲排盘程序如何确定值符

最近把整个奇门遁甲排盘程序写完了,比较有难度的就是确定值符和位置。

值符的计算是要看日柱的旬首,旬首是甲和己,无论日柱天干是什么,都要看和旬首的距离。

tgday,dzday = self.__tiangan.index(self.bz[0][4]),self.__dizhi.index(self.bz[0][5])
##日柱天干和日柱地支
        """计算旬首,从日天干数一直减到5或者0,求地支数"""
        n = 0
        if tgday < 5:
            while tgday > 0:
                tgday -= 1
                n += 1
                if tgday == 0:
                    break
        else:
            while tgday > 5:
                tgday -= 1
                n += 1
                if tgday == 5:
                    break

        dizhi = (dzday+12-n)%12
        """计算旬首结束"""

dizhi代表了旬首对应的地支,这个地支决定了局数。局数的求法:

"""求上中下三元,四仲为上,四孟为中,四季为下"""
        flag = 0
        if dizhi in [0,3,6,9]:
            flag = 0
        elif dizhi in [2,5,8,11]:
            flag = 1
        elif dizhi in [1,4,7,10]:
            flag = 2
        ju_num = self.jq[flag]   #  局数
        """计算三元结束,确定了局数"""

这时候,ju_num对应的宫位就是地盘戊的位置,然后根据宫位按照戊己庚辛壬癸丁丙乙按照阳顺阴逆排列:

"""根据阴阳遁,排地盘天干"""
        undertiangan = {}
        if self.yinyang == 1:
            for i in range(9):
                num = (i+9+ju_num)%9
                if num == 0:
                    num = num + 9
                undertiangan[str(num)] = self.__qmtiangan[i%9]
        else:
            for i in range(9):
                num = (9 - i + ju_num) % 9
                if num == 0:
                    num = num + 9
                undertiangan[str(num)] = self.__qmtiangan[i%9]
        """排地盘天干结束"""

这时候地盘天干排列完毕,地盘天干和对应的宫位有了,那么天盘值符就很容易确定了。

你可能感兴趣的:(python,程序人生)