【云云怪】第2个项目:快速算卦小屋

【项目预览】

【创作背景】

我爹在大学教《易经》,我也跟着学了点算卦的皮毛,当上了半仙,经常在群里给小伙伴算姻缘。其实算卦的流程非常的机械化,既然学了python,那就要用起来呀!解放双手,快速算卦!

【功能设想】

输入一句话,得出一个卦。输出卦名,卦辞,爻辞。因为对卦辞爻辞的解释实在太长,就不输出了,自己去百度查吧。

【功能实现】

一句话如何转换成一个卦呢?手工算卦的办法是:
1、把这句话分成两半。
2、前半截笔画总和除以8取余数,得到下卦数;后半截笔画总和除以8取余数,得到上卦数。
3、全句笔画总和除以6取余数,得到爻数。
4、按照“乾,兑,离,震,巽,坎,艮,坤”的顺序,确定上下卦名,再组合出全卦名。

可以看出,这个程序非常机械化,就是一个 数笔画-做除法-查卦名 的过程。机械的事情最适合交给程序来做了。
1、数笔画这个过程的本质就是把汉字数字化,虽然我不会用程序数笔画,但只要能实现汉字数字化,就行了。先把输入的字符串对半切片,然后使用ord()即可把任意字符转换成数字。
2、取余得到上下卦数
3、取余得到爻数
4、设置字典1,把上下卦数转换成卦名。设置字典2,把卦数+爻数转换成卦辞+爻辞。

【效果体验】

【完工感受】

以前在群里手工算卦得掰着手指头数笔画,尤其句子一长,可累了。所以我自称灵力不足,每天要限制算卦数量。现在好了,小程序一秒算卦,我只负责编解释+瞎掰扯就行了,有更多时间去摸鱼啦!
另外一点,这个程序里的字典的创建,真的是累死我了。一共64*7=448条卦辞+爻辞,从网上一条一条复制粘贴。这让我发誓赌咒要好好学习爬虫,以后再也不做这么笨重的事情了。

【完整代码】(字典太长,只截取了一小段):

import time

print('----------------欢迎来到云云仙快速算卦小屋----------------')
print('\n制作人:云云\n完工日期:2021-4-13')

print('''
算卦三原则:1,无疑不卜:没有疑问就不要瞎算了。
            2,不重复算:问过的问题不要重复问。
            3,不信不卜:抱着玩玩的态度问问题,算出的答案也就跟你玩玩。''')

order=['乾','兑','离','震','巽','坎','艮','坤']
dic={11:'乾为天:元亨利贞',\
     111:'初九,潜龙,勿用。',\
     112:'九二,见龙在田,利见大人。',\
     113:'九三,君子终日乾乾,夕惕若,厉无咎。',\
     ...
     884:'六四,括囊,无咎无誉。',\
     885:'六五,黄裳,元吉。',\
     886:'上六,龙战于野,其血玄黄。'}

while True:
    word=input('\n把你想算的问题写下来吧(支持中英文):')
    n=len(word)

    line1=[]
    line2=[]

    for i in range(0,int(n/2)):
        line1.append(ord(word[i]))
    sum1=sum(line1)
    yao1=sum1%8
    if yao1==0:
        yao1=8

    for j in range(int(n/2),n):
        line2.append(ord(word[j]))
    sum2=sum(line2)
    yao2=sum2%8
    if yao2==0:
        yao2=8

    yao=(sum1+sum2)%6
    if yao==0:
        yao=6

    time.sleep(1)
    
    print('\n您的算卦结果:上',order[yao2-1],'下',order[yao1-1],',第',yao,'爻\n')
    print('卦辞:',dic[yao1*10+yao2])
    print('\n爻辞:',dic[yao1*100+yao2*10+yao])

    time.sleep(1)
    print('\n'+'-'*70)
    conti=input('\n还想再算一卦吗?按1再算一卦。按其他键结束程序:')
    if conti!='1':
        print('\n谢谢使用,程序即将自动关闭。\n')
        for n in range(3,-1,-1):
            print(n,end="")
            print("\b"*2,end="",flush=True)
            time.sleep(1)
        break

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值