简单算命脚本
效果展示

文件内容
main.py文件
import json
import random
import time# 别挂配置数据
gua_data_path = "data.json"# 别卦数据
gua_data_map = {}
fake_delay = 10# 读取别卦数据
def init_gua_data(json_path):with open(gua_data_path, 'r', encoding='utf8') as fp:global gua_data_mapgua_data_map = json.load(fp)# 爻图标映射
yao_icon_map = {0: "- -",1: "---"
}# 经卦名
base_gua_name_map = {0: "坤", 1: "震", 2: "坎", 3: "兑", 4: "艮", 5: "离", 6: "巽", 7: "乾"
}# 数字转化为二进制数组
def base_gua_to_yao(gua, yao_length=3):result = []while gua >= 1:level = 0 if gua % 2 == 0 else 1gua //= 2result.append(level)while len(result) < yao_length:result.append(0)return result# 二进制数组转化为数字
def base_yao_to_gua(array):array = array[:]while len(array) > 0 and array[-1] == 0:array.pop()result = 0for i in range(len(array)):if array[i] == 0:continueresult += pow(2, i)return result# 打印一个挂
def print_gua(gua):yao_list = base_gua_to_yao(gua, 6)up_yao_list = yao_list[0:3]up = base_yao_to_gua(up_yao_list)print(yao_icon_map[up_yao_list[2]])print(yao_icon_map[up_yao_list[1]] + " " + base_gua_name_map[up])print(yao_icon_map[up_yao_list[0]])print("")down_yao_list = yao_list[3:6]down = base_yao_to_gua(down_yao_list)print(yao_icon_map[down_yao_list[2]])print(yao_icon_map[down_yao_list[1]] + " " + base_gua_name_map[down])print(yao_icon_map[down_yao_list[0]])# 使用梅花易数
def calculate_with_plum_flower():# 起上卦print("使用梅花易数♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️")print_a_wait_animation("卜上卦:", fake_delay)up_base_gua = int(round(time.time() * 1000)) % 8up_yao_array = base_gua_to_yao(up_base_gua)print("上卦获取成功,上卦为:", base_gua_name_map[up_base_gua])# 起下卦print_a_wait_animation("正在获取下卦:", fake_delay)down_base_gua = random.randint(0, 999999999999) % 8down_yao_array = base_gua_to_yao(down_base_gua)print("上卦获取成功,下卦为:", base_gua_name_map[down_base_gua])# 组成卦象print_a_wait_animation("正在组成本卦:", fake_delay)print("------------------------------------------------本卦------------------------------------------------")yao_list = up_yao_array + down_yao_arraygua = base_yao_to_gua(yao_list)print_gua(gua)# 读取本卦象信息gua_code = str(base_gua_name_map[up_base_gua]) + str(base_gua_name_map[down_base_gua])gua_data = gua_data_map[gua_code]print("本卦为:", gua_data['name'])print("辞:", gua_data['words'], "译:", gua_data['white_words'])print("象:", gua_data['picture'], "译:", gua_data['white_picture'])print_a_wait_animation("正在组成互卦:", fake_delay)print("------------------------------------------------互卦------------------------------------------------")# 读取互卦象信息up_hu_yao_list = [yao_list[4], yao_list[5], yao_list[0]]up_hu_gua = base_yao_to_gua(up_hu_yao_list)down_hu_yao_list = [yao_list[5], yao_list[0], yao_list[1]]down_hu_gua = base_yao_to_gua(down_hu_yao_list)hu_yao_list = up_hu_yao_list + down_hu_yao_listhu_gua = base_yao_to_gua(hu_yao_list)hu_gua_code = str(base_gua_name_map[up_hu_gua]) + str(base_gua_name_map[down_hu_gua])hu_gua_data = gua_data_map[hu_gua_code]print_gua(hu_gua)print("互卦为:", hu_gua_data['name'])print("辞:", hu_gua_data['words'], "译:", hu_gua_data['white_words'])print("象:", hu_gua_data['picture'], "译:", hu_gua_data['white_picture'])print_a_wait_animation("正在组成变卦:", fake_delay)print("------------------------------------------------变卦------------------------------------------------")change_index = int(round(time.time() * 1000)) % 6change_yao_list = yao_list[:]change_yao_list[change_index] = 0 if change_yao_list[change_index] == 1 else 1up_change_yao_list = change_yao_list[0:3]up_change_gua = base_yao_to_gua(up_change_yao_list)down_change_yao_list = change_yao_list[3:5]down_change_gua = base_yao_to_gua(down_change_yao_list)change_gua = base_yao_to_gua(change_yao_list)print_gua(change_gua)change_gua_code = str(base_gua_name_map[up_change_gua]) + str(base_gua_name_map[down_change_gua])change_gua_data = gua_data_map[change_gua_code]print("变卦为:", change_gua_data['name'])print("辞:", change_gua_data['words'], "译:", change_gua_data['white_words'])print("象:", change_gua_data['picture'], "译:", change_gua_data['white_picture'])def print_a_wait_animation(tips, times):animation = "|/-\\"idx = 0for i in range(times):print(tips + animation[idx % len(animation)], animation[idx % len(animation)], animation[idx % len(animation)],animation[idx % len(animation)], animation[idx % len(animation)], end="\r"),idx += 1time.sleep(0.1)init_gua_data(gua_data_path)
calculate_with_plum_flower()
data.json文件内容
import json
import random
import time# 别挂配置数据
gua_data_path = "data.json"# 别卦数据
gua_data_map = {}
fake_delay = 10# 读取别卦数据
def init_gua_data(json_path):with open(gua_data_path, 'r', encoding='utf8') as fp:global gua_data_mapgua_data_map = json.load(fp)# 爻图标映射
yao_icon_map = {0: "- -",1: "---"
}# 经卦名
base_gua_name_map = {0: "坤", 1: "震", 2: "坎", 3: "兑", 4: "艮", 5: "离", 6: "巽", 7: "乾"
}# 数字转化为二进制数组
def base_gua_to_yao(gua, yao_length=3):result = []while gua >= 1:level = 0 if gua % 2 == 0 else 1gua //= 2result.append(level)while len(result) < yao_length:result.append(0)return result# 二进制数组转化为数字
def base_yao_to_gua(array):array = array[:]while len(array) > 0 and array[-1] == 0:array.pop()result = 0for i in range(len(array)):if array[i] == 0:continueresult += pow(2, i)return result# 打印一个挂
def print_gua(gua):yao_list = base_gua_to_yao(gua, 6)up_yao_list = yao_list[0:3]up = base_yao_to_gua(up_yao_list)print(yao_icon_map[up_yao_list[2]])print(yao_icon_map[up_yao_list[1]] + " " + base_gua_name_map[up])print(yao_icon_map[up_yao_list[0]])print("")down_yao_list = yao_list[3:6]down = base_yao_to_gua(down_yao_list)print(yao_icon_map[down_yao_list[2]])print(yao_icon_map[down_yao_list[1]] + " " + base_gua_name_map[down])print(yao_icon_map[down_yao_list[0]])# 使用梅花易数
def calculate_with_plum_flower():# 起上卦print("使用梅花易数♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️♣️")print_a_wait_animation("卜上卦:", fake_delay)up_base_gua = int(round(time.time() * 1000)) % 8up_yao_array = base_gua_to_yao(up_base_gua)print("上卦获取成功,上卦为:", base_gua_name_map[up_base_gua])# 起下卦print_a_wait_animation("正在获取下卦:", fake_delay)down_base_gua = random.randint(0, 999999999999) % 8down_yao_array = base_gua_to_yao(down_base_gua)print("上卦获取成功,下卦为:", base_gua_name_map[down_base_gua])# 组成卦象print_a_wait_animation("正在组成本卦:", fake_delay)print("------------------------------------------------本卦------------------------------------------------")yao_list = up_yao_array + down_yao_arraygua = base_yao_to_gua(yao_list)print_gua(gua)# 读取本卦象信息gua_code = str(base_gua_name_map[up_base_gua]) + str(base_gua_name_map[down_base_gua])gua_data = gua_data_map[gua_code]print("本卦为:", gua_data['name'])print("辞:", gua_data['words'], "译:", gua_data['white_words'])print("象:", gua_data['picture'], "译:", gua_data['white_picture'])print_a_wait_animation("正在组成互卦:", fake_delay)print("------------------------------------------------互卦------------------------------------------------")# 读取互卦象信息up_hu_yao_list = [yao_list[4], yao_list[5], yao_list[0]]up_hu_gua = base_yao_to_gua(up_hu_yao_list)down_hu_yao_list = [yao_list[5], yao_list[0], yao_list[1]]down_hu_gua = base_yao_to_gua(down_hu_yao_list)hu_yao_list = up_hu_yao_list + down_hu_yao_listhu_gua = base_yao_to_gua(hu_yao_list)hu_gua_code = str(base_gua_name_map[up_hu_gua]) + str(base_gua_name_map[down_hu_gua])hu_gua_data = gua_data_map[hu_gua_code]print_gua(hu_gua)print("互卦为:", hu_gua_data['name'])print("辞:", hu_gua_data['words'], "译:", hu_gua_data['white_words'])print("象:", hu_gua_data['picture'], "译:", hu_gua_data['white_picture'])print_a_wait_animation("正在组成变卦:", fake_delay)print("------------------------------------------------变卦------------------------------------------------")change_index = int(round(time.time() * 1000)) % 6change_yao_list = yao_list[:]change_yao_list[change_index] = 0 if change_yao_list[change_index] == 1 else 1up_change_yao_list = change_yao_list[0:3]up_change_gua = base_yao_to_gua(up_change_yao_list)down_change_yao_list = change_yao_list[3:5]down_change_gua = base_yao_to_gua(down_change_yao_list)change_gua = base_yao_to_gua(change_yao_list)print_gua(change_gua)change_gua_code = str(base_gua_name_map[up_change_gua]) + str(base_gua_name_map[down_change_gua])change_gua_data = gua_data_map[change_gua_code]print("变卦为:", change_gua_data['name'])print("辞:", change_gua_data['words'], "译:", change_gua_data['white_words'])print("象:", change_gua_data['picture'], "译:", change_gua_data['white_picture'])def print_a_wait_animation(tips, times):animation = "|/-\\"idx = 0for i in range(times):print(tips + animation[idx % len(animation)], animation[idx % len(animation)], animation[idx % len(animation)],animation[idx % len(animation)], animation[idx % len(animation)], end="\r"),idx += 1time.sleep(0.1)init_gua_data(gua_data_path)
calculate_with_plum_flower()
执行方式
启动main.py文件
相关文章:
简单算命脚本
效果展示 文件内容 main.py文件 import json import random import time# 别挂配置数据 gua_data_path "data.json"# 别卦数据 gua_data_map {} fake_delay 10# 读取别卦数据 def init_gua_data(json_path):with open(gua_data_path, r, encodingutf8) as fp:gl…...
Lua-掌握Lua语言基础1
Lua是一种轻量级的脚本语言,广泛应用于游戏开发、嵌入式系统和其他领域。下面是Lua语言基础的介绍: 数据类型:Lua支持基本的数据类型,包括nil、boolean、number、string和table。其中,table是一种关联数组,…...
python-0003-pycharm开发虚拟环境中的项目
前言 在虚拟环境中创建好了python项目,使用pycharm进行开发 打开项目 使用pycharm打开项目 设置虚拟环境的解释器 File–>Settings–>Project(项目名)–>Python Interpreter–>添加解释器–>添加已经存在的解释器–>选择虚拟环境的解释器 …...
修改 MySQL update_time 默认值的坑
由于按规范需要对 update_time 字段需要对它做默认值的设置 现在有一个原始的表是这样的 CREATE TABLE test_up (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,update_time datetime default null COMMENT 操作时间,PRIMARY KEY (id) ) ENGINEInnoDB DEF…...
基于亚马逊云EC2+Docker搭建nextcloud私有化云盘
亚马逊云科技EC2云服务器(Elastic Compute Cloud)是亚马逊云科技AWS(Amazon Web Services)提供的一种云计算服务。EC2代表弹性计算云,它允许用户租用虚拟计算资源,包括CPU、内存、存储和网络带宽࿰…...
用try...catch进行判断
在写一些提交数据的判断上,有时候会写下面的ifelse的判断方法,少一点还好,多的话就很难受也不好看。 if(!that.driverObj.contrary){this.__utils.showToast(请先上传驾驶证副页图片);return false } if(!this.driverObj.start){this.__util…...
服务器遭遇挖矿病毒syst3md及其伪装者rcu-sched:原因、症状与解决方案
01 什么是挖矿病毒 挖矿病毒通常是恶意软件的一种,它会在受感染的系统上无授权地挖掘加密货币。关于"syst3md",是一种特定的挖矿病毒,它通过在受感染的Linux系统中执行一系列复杂操作来达到其目的。这些操作包括使用curl从网络下载…...
此机非彼机,工业计算机在工业行业的特殊地位
电子计算机,称为电脑。计算机是一种利用数字电子技术,根据一系列指令指示其自动执行任意算术或逻辑操作串行的设备。通用计算机因有能遵循被称为“程序”的一般操作集的能力而使得它们能够执行极其广泛的任务,以管理各种工厂和机器自动化工业…...
Python使用lxml解析XML格式化数据
Python使用lxml解析XML格式化数据 1. 效果图2. 源代码参考 方法一:无脑读取文件,遇到有关键词的行再去解析获取值 方法二:利用lxml等库,解析格式化数据,批量获取标签及其值 这篇博客介绍第2种办法,以菜鸟教…...
CDA-LevelⅡ【考题整理-带答案】
关于相关分析中应注意的问题,下面说法错误的是:B 如果两变量间的相关系数为0,则说明二者独立 。解释:只能说明两者不存在线性相关关系现通过参数估计得到一个一元线性回归模型为y3x4,在回归系数检验中下列说法错误的是…...
20240304 json可以包含复杂数组(数组里面套数组)
欣赏一下我的思维,它会以漫画,表格,文字。。。各种各样的形式呈现 对于问题1问题2 JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON本质上是一种文本…...
算法50:动态规划专练(力扣514题:自由之路-----4种写法)
题目: 力扣514 : 自由之路 . - 力扣(LeetCode) 题目的详细描述,直接打开力扣看就是了,下面说一下我对题目的理解: 事例1: 输入: ring "godding", key "gd" 输出: 4. 1. ring的第…...
重学SpringBoot3-集成Thymeleaf
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Thymeleaf 1. 添加Thymeleaf依赖2. 配置Thymeleaf属性(可选)3. 创建Thymeleaf模板4. 创建一个Controller5. 运行应用并访问页…...
【数据可视化】Echarts最常用图表
个人主页 : zxctscl 如有转载请先通知 文章目录 1. 前言2. 准备工作3. 柱状图3.1 绘制堆积柱状图3.2 绘制标准条形图3.3 绘制瀑布图 4. 折线图4.1 绘制堆积面积图和堆积折线图4.2 绘制阶梯图 5. 饼图5.1 绘制标准饼图5.2 绘制圆环图5.2 绘制嵌套饼图5.3 绘制南丁格尔…...
flink:通过table api把文件中读取的数据写入MySQL
当写入数据到外部数据库时,Flink 会使用 DDL 中定义的主键。如果定义了主键,则连接器将以 upsert 模式工作,否则连接器将以 append 模式工作 package cn.edu.tju.demo2;import org.apache.flink.streaming.api.environment.StreamExecutionE…...
【Java 多线程 哈希表】 HashTable, HashMap, ConcurrentHashMap 之间的区别
HashTable、HashMap和ConcurrentHashMap都是Java中用于存储键值对的集合框架的一部分,但它们之间存在一些重要的联系和区别。 联系 键值对存储:它们都用于存储键值对,并允许你根据键来检索值。基于哈希:它们内部都使用了哈希表来…...
有趣之matlab-烟花
待整合1 2 3 动态 有趣编程之11 静态 逼真 3 .m文件路径下放back1.jpg back4.jpg…背景照片 点击screen 就会有小白点升起,爆炸 function yanhuamoban()clear all;%定义全局变量global ah ;%坐标轴句柄global styleNum ;%爆炸图案样式global multiColor; %多颜色变换…...
C语言指针与数组(不适合初学者版):一篇文章带你深入了解指针与数组!
🎈个人主页:JAMES别扣了 💕在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. 😍希望我的文章对大家有着不一样的帮助,欢迎大家关注我,我也会回…...
springboot Mongo大数据查询优化方案
前言 因为项目需要把传感器的数据保存起来,当时设计的时是mongo来存储,后期需要从mongo DB里查询传感器的数据记录。由于传感器每秒都会像mongo数据库存500条左右的数据,1天就有4320万条数据,要想按照时间条件去查询,…...
Ollama管理本地开源大模型,用Open WebUI访问Ollama接口
现在开源大模型一个接一个的,而且各个都说自己的性能非常厉害,但是对于我们这些使用者,用起来就比较尴尬了。因为一个模型一个调用的方式,先得下载模型,下完模型,写加载代码,麻烦得很。 对于程…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
