【项目预览】

【创作背景】

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

【功能设想】

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

【功能实现】

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

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

【效果体验】

【完工感受】

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

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

import timeprint('----------------欢迎来到云云仙快速算卦小屋----------------')
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%8if yao1==0:yao1=8for j in range(int(n/2),n):line2.append(ord(word[j]))sum2=sum(line2)yao2=sum2%8if yao2==0:yao2=8yao=(sum1+sum2)%6if yao==0:yao=6time.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

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

  1. java 脚手架_肝了一个半月的 Java 项目快速开发脚手架:Chewing

    前言 闲来无事,整一个 Java 项目快速开发脚手架. 正文 一.简介 Chewing 是一个简单的 Java 项目快速开发脚手架.既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常 ...

  2. Windows之vue-cli安装和vue项目快速搭建

    Windows之vue-cli安装和vue项目快速搭建 1.提前安装好node.js, 安装步骤:https://blog.csdn.net/qq_43842093/article/details/1 ...

  3. Android项目快速开发框架探索(Mysql + OrmLite + Hessian + Sqlite)

    前言 结合之前所用的ormlite和hessian,再加上SAE已经支持JAVA,把服务端切换到JAVA,也就有了本文.使用hessian来做数据传输,ormlite来实现客户端与服务端的数据存储,极 ...

  4. Java 服务接入 OpenTracing(2) -- Java 项目快速接入 OpenTracing

    接入前准备 搭建 Collector 和 Querier 准备被织入 java 项目(如果已经有自己的项目jar包,可以直接跳过此步) 准备 java-specialagent 包 Java 项目织入 ...

  5. 如何快速算出一个数有多少个因子(c++)

    如何快速算出一个数有多少个(多少种)因子(c++) int count(int n) {int sum = 1;for (int i = 2; i * i <= n; i++) {if (n % ...

  6. 「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析

    「Vue 学习笔记 1」Vue 项目快速搭建,初始项目各个文件夹作用介绍和启动代码执行流程分析 前言 一.我的开发环境 二.使用 Vue CLI (Vue 脚手架)快速搭建项目 三.初始项目的目录结构 ...

  7. 广联达GTJ2018实战精准快速算量课程

    实战-GTJ2018实战精准快速算量梁板算量效率提升50%(南山主讲).67课完整超清视频,23GB带图纸. 教程目录 01课程介绍 02算量准备工作 03轴网及索引符号介绍 04绝对高程.相对标高. ...

  8. Flutter项目快速搭建指南

    本文字数:8683字 预计阅读时间:30 分钟 前言: 笔者在这之前已经有一年时间没有接触过flutter项目的开发了,目前由于新项目的需要,要重新开始搭建一个flutter项目.让我感到惊讶的是,f ...

  9. SpringBoot项目快速启动教程

    前言 我们后端开发出的boot项目,如果前端想测试功能,那么我们有一种非常简便的方式和前端沟通,使得前端可以快速的启动boot项目,不需要下载后端的IDEA.Tomcat.数据库-,从而轻松且快速的启 ...

最新文章

  1. 在预装win8的电脑上换win7系统讲解
  2. 封装方法公共文件common.js
  3. 袖口里的“超能力”:Facebook腕带式AR传感器,可隔空打字、操控界面,LeCun点赞...
  4. 4. Leetcode 18. 四数之和 (数组-双向双指针)
  5. 会议交流 | IJCKG 2021:Keynotes released!欢迎注册参会
  6. linux使用swap的命令,Linux系统如何使用swap和zram swap命令
  7. 第 15 篇:优化博客功能的细节,提升使用体验—— HelloDjango 系列教程
  8. PPT,要你好看(全彩)pdf
  9. Mac电脑疑似中毒该怎么应对处理?
  10. 黑域,黑阈 Permission denied
  11. w ndows7旗舰版网卡驱动,Win7网卡驱动64位离线安装包 免费版
  12. 统计遗传学:第四章,GWAS分析
  13. xheditor form java_xhEditor常见问题
  14. 迅雷下载Android Studio最新版本(Android Studio 2.1.2.0)
  15. 寓教于乐:12个学习编程的游戏化平台
  16. c语言编辑三色球问题,C语言实例编程:三色球问题
  17. 基于 钉钉认证 通过 华为、H3C 结合 OpenPortal认证计费系统 实现 网络准入 钉钉授权 实名认证
  18. 斐讯K2刷固件(支持v22.4.2.15以上)
  19. thymeleaf引用图片_thymeleaf显示图片(转)
  20. 面试总结+网上查阅的智力题

热门文章

  1. [转]1年时间业务量疯长40倍,谈人人车的平台架构演进之路
  2. 拷贝构造函数和赋值函数
  3. 排序算法的稳定性及其意义
  4. Ubuntu18.04 配置网卡
  5. java树_Java树
  6. 勤奋、乐观、皮实、自省
  7. 前端——使用jQuery给a标签添加、修改href链接
  8. 用TELNET连接Socket服务器程序
  9. HDOJ 1848 Fibonacci again and again
  10. python 如何使用pip国内源