灵棋占卜
灵棋经的排盘程序
写一个程序,模拟12个棋子,50%是正面,50%是反面None。
正面参与统计,12个棋子分别有4个“上”,“中”,“下”。执行程序后,统计上中下的个数,返回一个词典。
两种模拟棋子起卦的方法在实现细节和逻辑上有一些差异。以下是它们的主要区别:
-
simulate_chess_1
:- 适用于需要固定位置但正反面随机的场景。
- 实现简单,逻辑清晰。
-
simulate_chess
:- 适用于需要完全随机化位置和正反面的场景。
- 代码稍显复杂,但提供了更高的随机性和灵活性。
选择哪种方法取决于你的具体需求。如果你需要固定位置但正反面随机,可以选择 simulate_chess_1
。如果你需要完全随机化位置和正反面,可以选择 simulate_chess
。
用法
# 输入上中下棋子的个数,空格分割。不输入则是自动起卦
main_chess()
# 自动起卦
auto_chess()
获取
源码,还有编译好的exe(只支持自动起卦,但是包含了时间信息)
通过网盘分享的文件:灵棋占卜.exe等2个文件
链接: https://pan.baidu.com/s/17tWhFFMXxqkDoOCn0mB1qw?pwd=ccd5 提取码: ccd5
源码
import random
gua_dict = {
(1, 1, 1): ('大通卦', '前途光明,占得此卦者事业有上升趋势,宜行正道,则得福。'),
(1, 1, 2): ('渐泰卦', '伺机发迹,占得此卦者事业顺遂,切记待时而动,则得福。'),
(1, 1, 3): ('吉庆卦', '富裕昌盛,占得此卦者天生好运,不求自获,多福。'),
(1, 1, 4): ('富盛卦', '富贵盛极,占得此卦者宜顺天安命,避免物极则反,得福。'),
(1, 2, 1): ('乐道卦', '怀柔养性,占得此卦者自身力量不足,须求外援或与人共事。'),
(1, 2, 2): ('惊怖卦', '小有危难,占得此卦者先有磨难,而后成功。'),
(1, 2, 3): ('年丰卦', '宜田宜桑,占得此卦者所求将在较长时间后实现,需耐心等待。'),
(1, 2, 4): ('小戒卦', '提防小人,占得此卦者要谨慎提防身边的小人,地位低的人。'),
(1, 3, 1): ('得志卦', '恰逢其时,占得此卦者事业鼎盛,时机、时运极好。'),
(1, 3, 2): ('事遂卦', '运与时合,占得此卦者会有转运之机,循天理而行,就能得福。'),
(1, 3, 3): ('材达卦', '藏用相宜,占得此卦者凡事都能成功,命中有贵人相助。'),
(1, 3, 4): ('恣游卦', '肆意行乐,占得此卦者宜外出进取,出行顺利,谋事能成'),
(1, 4, 1): ('忧患卦', '正道不通,占得此卦者遇阻隔而不顺,行为守正,可免祸。'),
(1, 4, 2): ('慎德卦', '防范贼寇,占得此卦者出门要谨防盗贼、自身要反省后慎行。'),
(1, 4, 3): ('行令卦', '铲凶除逆,占得此卦者愿意为君王驱使,讨伐奸逆。'),
(1, 4, 4): ('将损卦', '作战渍败,占得此卦者不能成功克敌,有损兵折将的凶险。'),
(2, 1, 1): ('神护卦', '神灵附体,占得此卦者会遇到挫折和磨难,但终会化凶为吉。'),
(2, 1, 2): ('将败卦', '淫乐伤身,占得此卦者警惕自己不为外界女色所诱惑,节欲保寿。'),
(2, 1, 3): ('理乱卦', '惩奸除恶,占得此卦者是要人暂时不出来竟争,静待合适时机。'),
(2, 1, 4): ('未还卦', '静以待时,占得此卦者应在荒灾之年顺天应命,静待时机。'),
(2, 2, 1): ('戒贪卦', '神灵不佑,占得此卦者以神灵不佑,告诫人们勿贪求财宝。'),
(2, 2, 2): ('安泰卦', '中和正当,占得此卦者安居乐业、顺天受地,自会有福祉财运。'),
(2, 2, 3): ('昌吉卦', '官运正旺,占得此卦者少年得志,仕途平步青云。'),
(2, 2, 4): ('亨通卦', '富有财物,占得此卦者财运旺盛,既富且贵,黄金不尽。'),
(2, 3, 1): ('忧喜卦', '先忧后吉,占得此卦者有小忧而无大患,先忧虑而后吉顺。'),
(2, 3, 2): ('平安卦', '勿信流言,占得此卦者勿信流言,坦然去做自己想做的事。'),
(2, 3, 3): ('辟恶卦', '威德凛凛,占得此卦者能得人相助,转变命运,由穷困而通达。'),
(2, 3, 4): ('大获卦', '趁名逐利,占得此卦者将大获财运,但需要付出勤勉和辛劳。'),
(2, 4, 1): ('衰微卦', '天佑善人,占得此卦者有升官晋级,节节攀升之兆。'),
(2, 4, 2): ('避灾卦', '适时潜藏,占得此卦者宜适时潜藏,静守待时不宜进取。'),
(2, 4, 3): ('发蒙卦', '天降恩泽,占得此卦者仕宣得意,将有恩泽由上而降下。'),
(2, 4, 4): ('病患卦', '陷入困境,占得此卦者有陷于困境之忧,而得不到救助。'),
(3, 1, 1): ('明阳卦', '仕宦及时,占得此卦者正当旺运,宜于积极进取。'),
(3, 1, 2): ('天佑卦', '神女赐福,占得此卦者能得到天的佑护,特别是女性的帮助。'),
(3, 1, 3): ('尊贵卦', '富贵长寿,占得此卦者能走官运,适宜去求见富贵的人。'),
(3, 1, 4): ('宜祷卦', '倚仗神力,占得此卦者应祈求上天赏赐福,终小有收获。'),
(3, 2, 1): ('送货卦', '贵客遗财,占得此卦者有财运,可能会有贵客送来财物。'),
(3, 2, 2): ('无难卦', '土地平安,占得此卦者目前比较顺利,出入均没有妨碍。'),
(3, 2, 3): ('恭和卦', '和睦相处,占得此卦者上下关系和顺,合力行事成功。'),
(3, 2, 4): ('违克卦', '败坏纲纪,占得此卦者上下不和,居上者凶暴不仁,居下者不服从。'),
(3, 3, 1): ('贞寿卦', '隐士美德,占得此卦者愿退隐以安身,处幽僻之地以养寿。'),
(3, 3, 2): ('刚长卦', '同心同力,占得此卦者要与意气相投者结为同心,方可成功。'),
(3, 3, 3): ('强盛卦', '众人辅佐,占得此卦者应积极进取,建功立业必将兴旺。'),
(3, 3, 4): ('佳丽卦', '女子相助,占得此卦者有好的命运,富贵吉祥,利于女人'),
(3, 4, 1): ('得禄卦', '兴起旺运,占得此卦者会拥护变革,认为易位是得天助、得良辅。'),
(3, 4, 2): ('凝滞卦', '进退犹豫,占得此卦者办事遇到阻挠,令人进退两难。'),
(3, 4, 3): ('恶消卦', '先危后吉,占得此卦者能以正义阳刚之气消除邪恶妖氛。'),
(3, 4, 4): ('上正卦', '君王圣明,占得此卦者虽国有贤君,但中间仍有蒙蔽上听者。'),
(4, 1, 1): ('孤贫卦', '遭逢磨难,占得此卦者可能曾经受失亲之苦,或有离别之厄,宜改行。'),
(4, 1, 2): ('潜龙卦', '必有作为,占得此卦者要如潜龙,暂时避世,待时而行。'),
(4, 1, 3): ('益友卦', '宜于交往,占得此卦者应多与朋友尤其是居尊位者结交,才利于成事。'),
(4, 1, 4): ('奸长卦', '契阔离居,占得此卦者不愿困守家乡,但体会到在外的孤独、反复多阻。'),
(4, 2, 1): ('神助卦', '天神降福,占得此卦者要保持善根不绝,才能否极泰来,转凶为吉。'),
(4, 2, 2): ('解祀卦', '祭祀祈福,占得此卦者宜赶紧祈祷祭祀,求鬼神护佑,化解阴戾。'),
(4, 2, 3): ('抑灾卦', '贵人相助,占得此卦者能得到大人物之助,先有危难而后消除祸患。'),
(4, 2, 4): ('祈享卦', '鬼神护佑,占得此卦者不管遇上什么事,都要祭祀祖先,祈求福佑。'),
(4, 3, 1): ('从心卦', '百事亨通,占得此卦者宜祭祀于宗庙,而使事业由困境转为顺畅。'),
(4, 3, 2): ('得失卦', '吉凶难卜,占得此卦者起初并不顺利,而后转为吉祥。'),
(4, 3, 3): ('救助卦', '无辜被困,占得此卦者事业有上升趋势,宜行正道,则得福'),
(4, 3, 4): ('大同卦', '安泰通达,占得此卦者正处于事业最上升时,将迅猛发展而至极点。'),
(4, 4, 1): ('沉医卦', '静以待势,占得此卦者无论干什么都不顺利,处境贫穷困乏。'),
(4, 4, 2): ('阴长卦', '凶险衰危,占得此卦者多口舌之灾,可能有鬼祸缠身。'),
(4, 4, 3): ('遁世卦', '困窘至极,占得此卦者会因时运不济而招致灾祸,或无辜受害。'),
(4, 4, 4): ('众凶卦', '坏到极点,占得此卦者处于穷困已极、无路可走的境地。'),
(1, 1, 0): ('苦节卦', '无处立足,占得此卦者宜赶紧祈祷鬼神,求得佑护。'),
(1, 2, 0): ('欢悦卦', '相敬如宾,占得此卦者所行皆和融顺畅,男女关系相处甚佳。'),
(1, 3, 0): ('方遂卦', '福禄双全,占得此卦者做事顺利发达,百事顺心。'),
(1, 4, 0): ('鬼伺卦', '忧烦患病,占得此卦者须提防同类之间的矛盾,宜及时医治心病。'),
(2, 1, 0): ('迟吉卦', '好事晚成,占得此卦者求助他人,要静待佳音,不要操之过急。'),
(2, 2, 0): ('戒慎卦', '离愁别苦,占得此卦者要谨慎戒惧,小心度日,以免因疏于防范栽跟头。'),
(2, 3, 0): ('大成卦', '和顺无忧,占得此卦者发财有望富贵在即,命运亨通。'),
(2, 4, 0): ('扶危卦', '坚守节操,占得此卦者会有小人欺凌之祸,危难临头,恐难扶持。'),
(3, 1, 0): ('福流卦', '先悔后喜,占得此卦者先忧后吉,得上天佑护,且福瑞惠及子孙后代。'),
(3, 2, 0): ('晚就卦', '大器晚成,占得此卦者要及时努力,付出辛劳,终将有所收获。'),
(3, 3, 0): ('事君卦', '君臣相合,占得此卦者行事会一帆风顺,多守旧制,不常变更。'),
(3, 4, 0): ('必得卦', '凿璞成玉,占得此卦者处于得志的前期,必能如璞玉一样被发现。'),
(4, 1, 0): ('雪耻卦', '除奸却邪,占得此卦者能通过壮大自己,一扫前面厚重阴霾。'),
(4, 2, 0): ('戒进卦', '不利进取,占得此卦者要戒惧谨慎,对人对事多加退避,以免惹祸。'),
(4, 3, 0): ('戒逢卦', '及时自保,占得此卦者要知险而止,要辨明吉凶,保全自身。'),
(4, 4, 0): ('被绞卦', '办事求速,占得此卦者要急往救助,急人之所急,阻止危情发生。'),
(0, 1, 1): ('敬慎卦', '慎始防微,占得此卦者要防微杜渐,无论大小事,开始时就要谨慎自律。'),
(0, 1, 2): ('帝道卦', '功德无边,占得此卦者要立志而后实现其志愿,前程无限,功德浩大。'),
(0, 1, 3): ('不定卦', '狐疑不决,占得此卦者暂时宜无所作为,以免硬闯招来危险。'),
(0, 1, 4): ('邪佞卦', '奸佞得志,占得此卦者要受小人之气,若为良善之辈,则会为奸逆迫害。'),
(0, 2, 1): ('慎悔卦', '颠倒错位,占得此卦者要谨慎保守,轻易打破制度会惹来灾祸。'),
(0, 2, 2): ('宜初卦', '深思远虑,占得此卦者要有远见,及早发现事物的问题,并及时处理。'),
(0, 2, 3): ('福会卦', '敬天慎事,占得此卦者要谨慎从事,相信事业终会有所成就。'),
(0, 2, 4): ('阴贼卦', '危及后代,占得此卦者会受伤害,但于本人性命无忧,于后代不利。'),
(0, 3, 1): ('福利卦', '大吉大利,占得此卦者可交好运,加上自身努力,必能福利双收。'),
(0, 3, 2): ('福祥卦', '安宁通泰,占得此卦者宜静而自得,不宜躁而妄取,才得吉祥。'),
(0, 3, 3): ('攸叙卦', '蒙受奖励,占得此卦者要行善积德,惟有美德,才能自然得到福利。'),
(0, 3, 4): ('否倾卦', '任人唯贤,占得此卦者所求任何事情,都能得到合理的结局。'),
(0, 4, 1): ('未形卦', '龙将飞升,占得此卦者虽然目前不能马上实现愿望,却很有潜力上升得志。'),
(0, 4, 2): ('荡覆卦', '天降灾患,占得此卦者要祈祷天公或自想办法,勿让淫雨为害。'),
(0, 4, 3): ('避世卦', '贤人隐退,占得此卦者暂时会受小人之气,宜退隐而不宜进取。'),
(0, 4, 4): ('鬼动卦', '神符驱鬼,占得此卦者要以灵符驱鬼,祭祀拜天得福。'),
(1, 0, 1): ('微损卦', '小有不吉,占得此卦者自身生命力旺盛,但会遇到一点小的祸患。'),
(1, 0, 2): ('粗谐卦', '终得好报,占得此卦者要勤勉用事,终有好报,尤其主妇要善于持家。'),
(1, 0, 3): ('不耕卦', '天降旱灾,占得此卦者干什么都劳而无功。'),
(1, 0, 4): ('鬼灾卦', '虚耗无救,占得此卦者要祭祀求福,禳除灾祸,小心水火。'),
(2, 0, 1): ('空亡卦', '劳而无功,占得此卦者做很多事情常常白费很多心力,却难有满意结果。'),
(2, 0, 2): ('不谐卦', '志趣不合,占得此卦者遇到与自己相近的人和事物反而不能相通融合。'),
(2, 0, 3): ('习坎卦', '无法施力,占得此卦者想要摆脱厄运,却使自己更加受困,防不胜防。'),
(2, 0, 4): ('来革卦', '无所依托,占得此卦者因谋生计之故,不得不四处漂泊。'),
(3, 0, 1): ('无功卦', '空手而归,占得此卦者做了很多事情,却并没有得到应有的收获。'),
(3, 0, 2): ('雨灾卦', '天降洪涝,占得此卦者无处栖身,费力谋生,却温饱都难以满足。'),
(3, 0, 3): ('旱灾卦', '赤旱千里,占得此卦者生活艰难,流离失所,凡事难成。'),
(3, 0, 4): ('远袭卦', '失而复得,占得此卦者自已先有小伤害,但终能制胜敌人,利弊皆有。'),
(4, 0, 1): ('盗窃卦', '防止行盗,占得此卦者盗窃别人的东西,不能成功据为已有。'),
(4, 0, 2): ('失律卦', '逆天悖理,占得此卦者违背规律而行,必给自己带来祸殃。'),
(4, 0, 3): ('奸党卦', '抑制贤才,占得此卦者宜亲贤臣,远小人,举荐正人君子,抑制奸党。'),
(4, 0, 4): ('口舌卦', '祸福相侍,占得此卦者表面上很兴隆,实际上灾祸潜伏其中,因此要戒慎祸患。'),
(1, 0, 0): ('未明卦', '前途难料,占得此卦者目前不能马上成功,要静待时机成熟。'),
(2, 0, 0): ('迁流卦', '人事未定,占得此卦者凡事多不遂意,迁流不定,不能成功。'),
(3, 0, 0): ('未宁卦', '居无定所,占得此卦者正处于刚刚兴起的阶段,还没有真正强盛。'),
(4, 0, 0): ('迁流卦', '凶险非常,占得此卦者若沉疴在身,可能有死亡之凶险。'),
(0, 1, 0): ('发阳卦', '凡事光明,占得此卦者应发挥自身力量,自已筹划,也可信托他人,共同行事。'),
(0, 2, 0): ('岁登卦', '年终丰收,占得此卦者只要守持正道,静待时机,就会有大收获。'),
(0, 3, 0): ('人事卦', '人心大快,占得此卦者会走旺运,事事通达,处于事业的兴旺期。'),
(0, 4, 0): ('保身卦', '慎重自保,占得此卦者不要急于进取,有所作为,而应退避自守,安稳处事。'),
(0, 0, 1): ('化育卦', '始危后安,占得此卦者能致荣达昌盛,事无不顺,即使开始不顺,终得吉。'),
(0, 0, 2): ('地利卦', '安静厚重,占得此卦者倚仗自己的天性生存,就能保证小的吉祥。'),
(0, 0, 3): ('建侯卦', '建功立业,占得此卦者宜有所作为,可适宜变动,创立事业。'),
(0, 0, 4): ('送终卦', '养生送死,占得此卦者要对长辈送终尽孝,且要真心诚意。'),
(0, 0, 0): ('纯阴镘卦', '退而保真,占得此卦者不宜有所作为,静守正道,就可无灾祸。')}
# print(gua_dict)
def generate():
dct = {}
for i in range(1, 5):
for j in range(1, 5):
dct[(i, 0, j)] = ('', '''_''')
print(dct)
def get_input():
while True:
user_input = input("请输入上中下的棋子个数(用空格分割,无输入则是电脑起卦):").strip()
if not user_input:
return None
pieces = [n for n in user_input.split() if n.isdigit()]
if len(pieces) != 3:
print("错误:你应该输入三个数字,请重试!")
continue
pieces = [int(piece) for piece in pieces]
if all(0 <= piece <= 4 for piece in pieces):
return pieces
else:
print("错误:每个数字都应该在0到4之间,请重试!")
def simulate_chess_1():
'''
个人感觉,比较低级的模拟灵棋的算法
固定上中下的index
:return:
'''
chess = [random.choice(['正面', '反面']) for _ in range(12)]
# 创建一个字典来存储“上”,“中”,“下”的数量
count = {'上': 0, '中': 0, '下': 0}
# 遍历棋子,如果是正面,就增加对应的位置的数量
for i, c in enumerate(chess):
if c == '正面':
if i < 4:
count['上'] += 1
elif i < 8:
count['中'] += 1
else:
count['下'] += 1
return count
def simulate_chess():
'''
模拟灵棋的算法,个人更倾向于这个算法
:return:
'''
# 创建12个棋子,标记位置
chess = ['上'] * 4 + ['中'] * 4 + ['下'] * 4
# 打乱棋子的顺序
random.shuffle(chess)
# 创建一个空列表来存储正面的棋子
front_chess = []
# 遍历棋子,如果是正面,就添加到新的列表中
for c in chess:
if random.choice([True, False]): # 50%的概率是正面
front_chess.append(c)
# 创建一个字典来存储“上”,“中”,“下”的数量
count = {'上': 0, '中': 0, '下': 0}
# 遍历正面的棋子,统计“上”,“中”,“下”的数量
for c in front_chess:
count[c] += 1
return count
def main_chess():
if pieces := get_input():
# 用户输入了有效内容
print("你输入的棋子个数为:", pieces)
pieces = tuple(pieces)
else:
# 用户无输入内容
dic = simulate_chess()
print(dic)
pieces = (dic['上'], dic['中'], dic['下'])
gua, saying = gua_dict[(pieces)]
print(gua)
print(saying)
def auto_chess():
dic = simulate_chess()
print(dic)
pieces = (dic['上'], dic['中'], dic['下'])
gua, saying = gua_dict[(pieces)]
print(gua)
print(saying)
if __name__ == "__main__":
main_chess()
auto_chess()
标签:起卦,Code,Python,排盘,占得,事业,此卦者,input,chess
From: https://www.cnblogs.com/taichi-share/p/18621849