掐指一算——小六壬预测方法的简单实现

掐指一算——小六壬预测方法的简单实现其法以大安起正月 月上起日 日上起时

大家好,欢迎来到IT知识分享网。

小六壬预测方法十分简单,预测时只须提取当时的月、日、时信息,用左拇指在六个掌诀位上按顺时针方向依次掐算即知结果。其法以大安起正月,月上起日,日上起时。注意:这句话意思就是从月上开始计算日子,从日上开始计算时辰。如:占三月初五辰时吉凶。大安起数,三(月)是速喜,速喜起日(开始计算日子),五是大安。大安起时(开始计算时辰),辰时是小吉。

第一步,先确定月份在掌诀上的起点(定位),以起点推算月份落点。不管是第几个月,均以“大安”为正月起点,然后按顺时针在六个掌诀定位上按六神次序依次往下数。

第二步,以月份落(终)点为日辰起点,然后推算日辰落点。从月份落点上起初一,同样按顺时针在六个掌诀定位上按六神顺序依次柱下数,一直数到天数为止,此掌诀定位即为日辰之落点。

第三步,以日辰落点为时辰起点,推算时辰落点。

代码如下:

from lunarcalendar import Converter, Solar import re def six_divination(lunar_month, lunar_day, s): # 六个掌诀的位置 positions = ["大安", "留连", "速喜", "赤口", "小吉", "空亡"] # 计算月份、日期和时间对应的掌诀位置 month_position = (lunar_month - 1) % 6 day_position = (lunar_day + month_position - 1) % 6 hour_position = (s + lunar_month - 1 + lunar_day - 1) % 6 return positions[month_position], positions[day_position], positions[hour_position] def convert_to_lunar(year, month, day): # 使用Converter将公历日期转换为农历日期 solar_date = Solar(year, month, day) lunar_date = Converter.Solar2Lunar(solar_date) return lunar_date.year, lunar_date.month, lunar_date.day def convert_hour_to_shichen(in_hour): # 将24小时制时间转换为12小时制,并确定对应的时辰 hour = int(in_hour.split(":")[0]) if 0 <= hour < 1 or hour == 23: return "子", 0 elif 1 <= hour < 3: return "丑", 1 elif 3 <= hour < 5: return "寅", 2 elif 5 <= hour < 7: return "卯", 3 elif 7 <= hour < 9: return "辰", 4 elif 9 <= hour < 11: return "巳", 5 elif 11 <= hour < 13: return "午", 6 elif 13 <= hour < 15: return "未", 7 elif 15 <= hour < 17: return "申", 8 elif 17 <= hour < 19: return "酉", 9 elif 19 <= hour < 21: return "戌", 10 elif 21 <= hour < 23: return "亥", 11 def get_valid_int(prompt, min_value, max_value): while True: try: value = int(input(prompt)) if min_value <= value <= max_value: return value else: print(f"请输入一个在{min_value}和{max_value}之间的整数。") except ValueError: print("输入无效,请输入一个整数。") def get_valid_time(prompt): while True: time_str = input(prompt).strip() # 去除两端空白字符 # 清除时间字符串中的任何中文字符 time_str = re.sub(r'[^\x00-\x7F]+', '', time_str) match = re.match(r'^([01]?[0-9]|2[0-3]):([0-5][0-9])$', time_str) if match: return time_str else: print("请输入一个有效的时间格式,例如 '5:30'。") # 输入公历年、月、日和时辰(24小时制) year = get_valid_int("请输入公历年份(如 2024):", 1, 9999) month = get_valid_int("请输入公历月份(1-12):", 1, 12) day = get_valid_int("请输入公历日期(1-31):", 1, 31) hour_input = get_valid_time("请输入24小时制时间(格式为 HH:MM):") lunar_year, lunar_month, lunar_day = convert_to_lunar(year, month, day) # 转换公历时间到农历时辰 shichen, hour = convert_hour_to_shichen(hour_input) # 进行小六壬预测 month_result, day_result, hour_result = six_divination(lunar_month, lunar_day, hour) print(f"公历{year}年{month}月{day}日{hour_input}对应的农历日期为:农历{lunar_year}年{lunar_month}月{lunar_day}日{hour_input}") print(f"根据小六壬预测,该日期的占卜结果为:月份位置-{month_result}, 日期位置-{day_result}, 农历时辰为:{shichen}时-{hour_result}") 

例1

如你农历2010年六月初五上午九点半。要和男友(女友)初次相会,可以算一下吉凶如何。

前面说了凡事都从大安起卦,大安为一月,留连为二月,速喜为三月,赤口为四月,小吉为五月,空亡为六月;下面再算日子,月份算到空亡了,接着日子从空亡开始,空亡是初一,大安是初二,留连初三,速喜初四,赤口初五;同理接着时辰算,赤口是子时,小吉是丑时,空亡是寅时,大安是卯时,留连是辰时,速喜是巳时(9:00-11:00)。所以最终得了个速喜卦。是好事,可能一见钟情。

例2

(一)首先照顺时针方向由大安开始计为正月,则留连便是二月,如此类推,八月就是留连了。

(二)再由八月这个留连开始计为初一,速喜为初二,如此类推,十七日就是空亡了。

(三)由十七日这个空亡开始计为子时,大安就是丑时,如此类推,顺时针数下去,辰时就落在赤口上了

验证:

例1

如上所述:农历2010年六月初五上午九点半即2010年7月16日9:30

六月——空亡,初五——赤口,上午九点半——速喜巳时

例2

如上所述:

农历八月十七日辰时即2010年9月24日上午07:00-09:00

八月——留连,十七——空亡,上午07:00-09:00——赤口

请输入公历年份:2010 请输入公历月份:7 请输入公历日期:16 请输入24小时制时间(格式为 HH:MM):9:30 公历2010年7月16日9:30对应的农历日期为:农历2010年6月5日9:30 根据小六壬预测,该日期的占卜结果为:月份位置-空亡, 日期位置-赤口, 农历时辰为:巳时-速喜 

请输入公历年份:2010 请输入公历月份:9 请输入公历日期:24 请输入24小时制时间(格式为 HH:MM):8:00 公历2010年9月24日8:00对应的农历日期为:农历2010年8月17日8:00 根据小六壬预测,该日期的占卜结果为:月份位置-留连, 日期位置-空亡, 农历时辰为:辰时-赤口

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/154516.html

(0)
上一篇 2025-02-25 16:15
下一篇 2025-02-25 16:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信