【技术分享】用 Python 实现 小六壬 测算吉时

我是大海的叹息,是天空的泪水,是田野的微笑。这同爱情何其酷肖:它是感情大海的叹息,是思想天空的泪水,是心灵田野的微笑。


前言

我国传统文化源远流长,孕育出了众多奇门术法。在小说和各种影视作品中,我们经常看到有高人掐指一算,沉思片刻,就悟得天机的情节,这里高人所使用的术法,就是小六壬。小六壬易学不易成,起课需天机,悟道需德行。本文用小学生人均在学的Python实现一个简易版小六壬吉时测算程序,简单易懂。

提示:本文仅为计算机研究,并不建议在日常生活中使用下述方法测算。功行不够,强行起课,违背天时,难有良果。


一、小六壬的算法

小六壬功法需谨记:不急不占,无事不占,不动不占。本法可测万象事物,测算吉时需准确的年,月,日,时,即可算出结果。入卦方法为按阴历算,用左拇指在六个掌诀位上按顺时针方向依次掐算即知结果。其法以大安起正月,月上起日,日上起时。共分为大安,留连,速喜,赤口,小吉,空亡。

大安,平安,求财得,失物返,疾病安。

留连,难成,诉讼缓,速寻物,防口角。

速喜,有喜,失物得,疾病愈,远行安。

赤口,口角,防诉状,远行惊,遭诅咒。

小吉,吉祥,人报喜,出走归,凡事美。

空亡,大凶,遇灾祸,远行难,病益重。

在这里插入图片描述

在使用时,月份,日期,时辰需要相互配合,运气也与八字有关,如八字中今年有不利,可以用小六壬来预测事情发生的时间,来进行预防。

在使用时,日期,时辰相互配合最重要。先找出日子的六壬,再看时辰的六壬,下面是规律:

大安日

(1),大安加留连,办事不周全,失物西北去,婚姻晚几天。

(2),大安加速喜,事事自己起,失物当日见,婚姻自己提。

(3),大安加赤口,办事不顺手,失物不用找,婚姻两分手。

(4),大安加小吉,事事从己及,失物不出门,婚姻成就地。

(5),大安加空亡,病人要上床,失物无踪影,事事不顺情。

留连日

(1),留连加大安,办事两分张,婚姻有喜事,先苦后来甜。

(2),留连加速喜,事事由自己,婚姻有成意,失物三天里。

(3),留连加赤口,病者死人口,失物准丢失,婚姻两分手。

(4),留连加小吉,事事不用提,失物东南去,病者出人齐。

(5),留连加空亡,病人准死亡,失物不见面,婚姻两分张。

速喜日

(1),速喜加赤口,自己往外走,失物往正北,婚姻得勤走。

(2),速喜加小吉,婚姻有人提,病人当天好,时物在家里。

(3),速喜加空亡,婚姻有分张,病者积极治,失物不久见。

(4),速喜加大安,事事都平安,姻姻成全了,占病都相安。

(5),速喜加留连,婚姻不可言,失物无信息,病人有仙缘。

赤口日

(1),赤口加小吉,办事自己提,婚姻不能成,失物无信息。

(2),赤口加空亡,无病也上床,失物不用找,婚姻不能成。

(3),赤口加大安,办事险和难,失物东北找,婚姻指定难。

(4),赤口加留连,办事有困难,行人在外走,失物不回还。

(5),赤口加速喜,婚姻在自己,失物有着落,办事官事起。

小吉日

(1),小吉加空亡,病人不妥当,失物正东找,婚姻再想想。

(2),小吉加大安,事事两周全,婚姻当日定,失物自己损。

(3),小吉加留连,事事有反还,婚姻有人破,失物上西南。

(4),小吉加速喜,事事从头起,婚姻能成就,失物在院里。

(5),小吉加赤口,办事往外走,婚姻有难处,失物丢了手。

空亡日

(1),空亡加大安,事事不周全,婚姻从和好,失物反复间。

(2),空亡加留连,办事处处难,婚姻重新定,失物永不还。

(3),空亡加速喜,事事怨自己,婚姻有一定,失物在家里。

(4),空亡加赤口,办事官非有,婚姻难定准,失物往远走。

(5),空亡加小吉,事事有猜疑,婚姻有喜事,失物回家里。

二、程序写法

小六壬的算法其实非常简单,更多的是得到结果后的理解。在算法中,每年都会重新计算月,正月必为大安,随后各月进行循环,而日是在月的基础上进行循环,时是在日的基础上循环,因此我们可以将月、日相加,对6取模,即可看到当前日处于哪个象位。因为初一会重复当月,所以需要减一。

代码如下:

dict_list = ['大安','留连','速喜','赤口','小吉','空亡']
sum = month + day - 1
today_i = int((sum - 1) % 6)
month_i = int((month - 1) % 6)
today_f = dict_list[today_i]
month_f = dict_list[month_i]

因为小六壬使用的年月日都是太阴历的,所以我们需要进行太阳历与太阴历的转换,borax库可以提供这一功能。

代码如下:

from borax.calendars.lunardate import LunarDate

dict_list = ['大安','留连','速喜','赤口','小吉','空亡']

s_year = int(input("请输入年:"))
s_month = int(input("请输入月:"))
s_day = int(input("请输入日:"))

lunar_date = LunarDate.from_solar_date(s_year, s_month, s_day)
month = lunar_date.month
day = lunar_date.day
print(lunar_date.strftime('%G'))
print('农历 ',month,'月 ',day,'日 ')

在这里,我使用的是 anaconda + pycharm 的编译环境,详见【技术分享】Pycharm 使用 Anaconda 的编译环境 Anaconda 环境创建

我希望能够将程序打包成exe可执行文件,方便使用。在Python中我们可以使用pyinstaller完成这一功能,在安装pyinstaller库后,我们需要准备一个icon图标,将png格式直接改为icon可能造成无法读取,可以使用比特虫在线制作ico图标ico图标转换工具网站进行转换,亲测暂时没什么问题。将转换好的图标放在py文件同一个文件夹里面,运行命令行,-F表示将文件压成一个可执行文件,-i表示icon。运行会生成一个dist文件夹,里面就是生成的程序。

pyinstaller -F -i ./sample.ico sample.py

得到下面的运行结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这就是一个简单程序的编写过程,我们可以看到今天是赤口日,接下来就会到赤口时,我决定接下来两个小时不说话了。

完整代码如下:

from borax.calendars.lunardate import LunarDate

dict_list = ['大安','留连','速喜','赤口','小吉','空亡']

s_year = int(input("请输入年:"))
s_month = int(input("请输入月:"))
s_day = int(input("请输入日:"))

lunar_date = LunarDate.from_solar_date(s_year, s_month, s_day)
month = lunar_date.month
day = lunar_date.day
print(lunar_date.strftime('%G'))
print('农历 ',month,'月 ',day,'日 ')

sum = month + day - 1
today_i = int((sum - 1) % 6)
month_i = int((month - 1) % 6)
today_f = dict_list[today_i]
month_f = dict_list[month_i]

time_i_list = []

for i in range(0, 12):
    num = int((sum - 1 + i) % 6)
    time_i_list.append(num)

print('本月运势: ', month_f)
print('今日运势: ', today_f)
print('子时 23:00-01:00: ', dict_list[time_i_list[0]])
print('丑时 01:00-03:00: ', dict_list[time_i_list[1]])
print('寅时 03:00-05:00: ', dict_list[time_i_list[2]])
print('卯时 05:00-07:00: ', dict_list[time_i_list[3]])
print('辰时 07:00-09:00: ', dict_list[time_i_list[4]])
print('巳时 09:00-11:00: ', dict_list[time_i_list[5]])
print('午时 11:00-13:00: ', dict_list[time_i_list[6]])
print('未时 13:00-15:00: ', dict_list[time_i_list[7]])
print('申时 15:00-17:00: ', dict_list[time_i_list[8]])
print('酉时 17:00-19:00: ', dict_list[time_i_list[9]])
print('戌时 19:00-21:00: ', dict_list[time_i_list[10]])
print('亥时 21:00-23:00: ', dict_list[time_i_list[11]])

input()

总结

界面非常简单,后续可能会加入实用性更高的交互界面,本文重点为代码学习交流,欢迎讨论。

理论参考

小六壬的解释和速断

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值