六爻排盘神机
选修课留了3000字的论文......确实,削微有那么一点小困难……
但是,倘若我拿出已经占了6419个字符的 “六爻排盘神机” ,阁下…应该…不会…骂我吧
且看,六爻排盘神机!
import random
import datetime
from lunarcalendar import Converter, Solardef get_user_input_time():user_input = input("请输入起卦时间 (格式如2024.05.29-21:56): ")return user_inputdef parse_input(user_input):try:date_part, time_part = user_input.split('-')year, month, day = map(int, date_part.split('.'))hour, minute = map(int, time_part.split(':'))return datetime.datetime(year, month, day, hour, minute)except ValueError as e:print(f"输入格式无效: {e}")return Nonedef get_chinese_hour(hour):chinese_hours = ["子时", "丑时", "丑时", "寅时", "寅时", "卯时", "卯时", "辰时", "辰时", "巳时", "巳时","午时", "午时", "未时", "未时", "申时", "申时", "酉时", "酉时", "戌时", "戌时", "亥时", "亥时"]return chinese_hours[hour]def convert_to_lunar(solar_date):try:solar = Solar(solar_date.year, solar_date.month, solar_date.day)lunar = Converter.Solar2Lunar(solar)return lunarexcept ValueError as e:print(f"转换为阴历时出错: {e}")return Nonedef get_ganzhi_year(year):# 天干tiangan = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"]# 地支dizhi = ["子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"]# 甲子年(公元4年)为基准base_year = 4diff_years = year - base_yeargan = tiangan[diff_years % 10]zhi = dizhi[diff_years % 12]return f"{gan}{zhi}年"def num_to_chinese(num):chinese_nums = "零一二三四五六七八九"return "".join(chinese_nums[int(digit)] for digit in str(num))def get_chinese_day(day):chinese_days = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十","十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十","廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"]return chinese_days[day - 1]def get_chinese_month(month, is_leap):chinese_months = ["正月", "二月", "三月", "四月", "五月", "六月","七月", "八月", "九月", "十月", "冬月", "腊月"]return ("闰" if is_leap else "") + chinese_months[month - 1]def print_lunar_date(lunar_date, solar_date):if lunar_date:chinese_hour = get_chinese_hour(solar_date.hour)chinese_year = get_ganzhi_year(lunar_date.year)chinese_month = get_chinese_month(lunar_date.month, lunar_date.isleap)chinese_day = get_chinese_day(lunar_date.day)print(f"\n起卦时间: {chinese_year} {chinese_month} {chinese_day} {chinese_hour}\n")def coin_toss():# 模拟投掷三枚硬币,0表示正面朝上(阴),1表示反面朝上(阳)tosses = [random.choice([0, 1]) for _ in range(3)] # 生成三次硬币投掷的结果# print("投掷结果:", tosses)return tosses.count(1) # 统计投掷结果中反面(阳面)朝上的硬币个数# 定义64个卦的名字
hexagram_names = {'111111': '⚠乾为天','111110': '天风姤','111100': '天山遁','111000': '天地否','110000': '风地观','100000': '山地剥','101000': '火地晋','101111': '火天大有','011011': '⚠兑为泽','011010': '泽水困','011000': '泽地萃','011100': '泽山咸','010100': '水山蹇','000100': '地山谦','001100': '雷山小过','001011': '雷泽归妹','101101': '⚠离为火','101100': '火山旅','101110': '火风鼎','101010': '火水未济','100010': '山水蒙','110010': '风水换','111010': '天水讼','111101': '天火同人','001001': '⚠震为雷','001000': '雷地豫','001010': '雷水解','001110': '雷风恒','000110': '地风升','010110': '水风井','011110': '泽风大过','011001': '泽雷随','110110': '⚠巽为风','110111': '风天小畜','110101': '风火家人','110001': '风雷益','111001': '天雷无妄','101001': '火雷噬嗑','100001': '山雷颐','100110': '山风蛊','010010': '⚠坎为水','010011': '水泽节','010001': '水雷屯','010101': '水火既济','011101': '泽火革','001101': '雷火丰','000101': '地火明夷','000010': '地水师','100100': '⚠艮为山','100101': '山火贲','100111': '山天大畜','100011': '山泽损','101011': '火泽睽','111011': '天泽履','110011': '风泽中孚','110100': '风山渐','000000': '⚠坤为地','000001': '地雷复','000011': '地泽临','000111': '地天泰','001111': '雷天大壮','011111': '泽天夬','010111': '天水需','010000': '水地比'
}def get_hexagram_name(hexagram):hexagram_code = ''.join(['1' if '▄▄▄▄▄▄▄▄▄▄' in yao else '0' for yao in hexagram])# 翻转hexagram_codereversed_hexagram_code = hexagram_code[::-1]return hexagram_names.get(reversed_hexagram_code, '出错了!')def coin_toss():# 模拟投掷三枚硬币,0表示正面朝上(阴),1表示反面朝上(阳)tosses = [random.choice([0, 1]) for _ in range(3)] # 生成三次硬币投掷的结果return tosses.count(1) # 统计投掷结果中反面(阳面)朝上的硬币个数def interpret_toss(toss_result):# 解释投掷结果if toss_result == 1: # 1个阳面return '▄▄▄▄▄▄▄▄▄▄', False # 少阳,不变elif toss_result == 2: # 2个阳面 (1个阴面)return '▄▄▄▄ ▄▄▄▄', False # 少阴,不变elif toss_result == 0: # 0个阳面 (3个阴面)return '▄▄▄▄ ▄▄▄▄ x', True # 老阴,有变else: # toss_result == 3return '▄▄▄▄▄▄▄▄▄▄ x', True # 老阳,有变def generate_hexagram():hexagram = []mutations = []for i in range(6):toss_result = coin_toss()yao, is_mutation = interpret_toss(toss_result)hexagram.append(yao)if is_mutation:mutations.append((len(hexagram) - 1, yao))return hexagram, mutationsdef generate_mutations(hexagram, mutations):new_hexagram = hexagram[:]for yao_idx, yao in mutations:if yao == '▄▄▄▄ ▄▄▄▄ x': # 老阴变老阳new_hexagram[yao_idx] = '▄▄▄▄▄▄▄▄▄▄'elif yao == '▄▄▄▄▄▄▄▄▄▄ x': # 老阳变老阴new_hexagram[yao_idx] = '▄▄▄▄ ▄▄▄▄'return new_hexagramdef print_hexagram(hexagram):yao_labels = ["六爻", "五爻", "四爻", "三爻", "二爻", "初爻"]for i, yao in enumerate(hexagram[::-1]):print(f"{yao_labels[i]}: {yao}")def main():print("-+"*10 + " 六爻排盘神机 " + "+-"*10+"\n")input("请写下占问事宜:")user_input_time = get_user_input_time()solar_date = parse_input(user_input_time)if solar_date:lunar_date = convert_to_lunar(solar_date)print_lunar_date(lunar_date, solar_date)hexagram, mutations = generate_hexagram()hexagram_name = get_hexagram_name(hexagram)print(f"主卦: {hexagram_name}")print_hexagram(hexagram)if mutations:new_hexagram = generate_mutations(hexagram, mutations)new_hexagram_name = get_hexagram_name(new_hexagram)print(f"\n变卦: {new_hexagram_name}")print_hexagram(new_hexagram)print("\n" + "-+" * 10 + " 六爻排盘神机 " + "+-" * 10)if __name__ == "__main__":main()
相关文章:
六爻排盘神机
选修课留了3000字的论文......确实,削微有那么一点小困难…… 但是,倘若我拿出已经占了6419个字符的 “六爻排盘神机” ,阁下…应该…不会…骂我吧 且看,六爻排盘神机! import random import datetime from lunarcale…...
【ARMv8/v9 GIC 系列 2.1 -- GIC SPI 中断的 pending 和 clear pending 配置】
文章目录 GIC Pending 和 Clear PendingGICD_ISPENDR<n>GICD_ICPENDR<n>参数<n>编号解释使用举例设置中断ID 100为挂起状态清除中断ID 100的挂起状态 代码实现小结 GIC Pending 和 Clear Pending 在ARMv8体系结构中,GICD_ISPENDR<n> 和 GI…...
SpringBoot集成logback初始化源码解析(部分)
一.SpringBoot配置扩展点 SpringBoot日志模块使用监听的方式进行初始化,在SpringBoot项目启动后,会通知日志监听器 在日志监听器中ApplicationStartingEvent事件用来确定到底使用哪个日志系统,logback log4j等 在日志监听器中ApplicationEn…...
【Linux工具】yum软件包管理器与Vim编辑器的高效运用
目录 Linux 软件包管理器 YUM 什么是软件包 安装工具 rzsz 及注意事项 查看软件包 安装和卸载软件 安装软件 卸载软件 Linux 开发工具 编辑器 - Vim 使用 编辑 Vim 与 Vi 的区别 Vim 的基本概念 三种模式 Vim 的基本操作 操作尝试: Vim 命令集解释…...
Matlab数学建模实战应用:案例4 - 图像处理
目录 前言 一、图像处理基础 二、Matlab图像处理工具箱 三、案例:图像锐化、去噪和分割 步骤 1:读取和显示图像 步骤 2:图像锐化 步骤 3:图像去噪 步骤 4:图像分割 完整代码示例 四、实际应用 实例总结 总…...
Studying-代码随想录训练营day15| 222.完全二叉树的节点个数、110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和
第十五天,二叉树part03💪,编程语言:C 目录 257.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 总结 257.完全二叉树的节点个数 文档讲解:代码随想录完全二叉树的节点个数 视频讲解…...
Python 基础:异常
目录 一、异常概念二、处理异常2.1 抛出异常2.2 使用 try-except 代码块2.3 使用 try-except-else 代码块2.4 静默失败 三、总结 遇到看不明白的地方,欢迎在评论中留言呐,一起讨论,一起进步! 本文参考:《Python编程&a…...
XML 应用程序
XML 应用程序 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它是一种自我描述的语言,允许用户定义自己的标签和文档结构。XML广泛应用于各种应用程序中,包括网站开发、数据交换、文档管理等。本文将探讨XML的一些主要…...
SprringCloud Gateway动态添加路由不重启
文章目录 前言:一、动态路由必要性二、SpringCloud Gateway路由加载过程RouteDefinitionLocator接口PropertiesRouteDefinitionLocator类DiscoveryClientRouteDefinitionLocatorInMemoryRouteDefinitionRepositoryCompositeRouteDefinitionLocator类CachingRouteDef…...
Windows安装mysql
首先去官网下载社区版本的mysql(如果连不上,挂梯子) https://www.mysql.com/downloads/ 2. 去配置环境变量path 3. 在cmd里面初始化数据库(在搜索框输入cmd,或者在资源管理器下搜索烂输入cmd回车就行) my…...
chatgpt: linux 下用纯c 编写ui
在Linux下用纯C语言编写用户界面(UI),通常会使用GTK或Xlib。GTK是一个更高级的库,提供了丰富的控件和功能,而Xlib则是一个更底层的库,提供了直接操作X Window系统的功能。 下面是一个使用GTK在Linux上创建…...
Java十六进制Dump打印数据
代码 package test;import java.io.IOException;import sun.misc.HexDumpEncoder;@SuppressWarnings("restriction")...
某棋牌渗透测试
前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 一、信息收集 这里通过fofa进行收集,语法为:body某棋牌 && titlexxx 图1-1 fofa资产收集 …...
JAVA面试(六)
缓存 MemcachedredisRedis常见数据类型和使用Redis缓存持久化RDB-快照AOF-追加文件 Redis数据过期机制惰性删除定期删除Redis缓存淘汰策略(8种)算法LRU (Least Recently Used):最近最少使用LFU(Least Frequ…...
【C语言】手写学生管理系统丨附源码+教程
最近感觉大家好多在忙C语言课设~ 我来贡献一下,如果对你有帮助的话谢谢大家的点赞收藏喔! 1. 项目分析 小白的神级项目,99%的程序员,都做过这个项目! 掌握这个项目,就基本掌握 C 语言了! 跳…...
流媒体传输协议HTTP-FLV、WebSocket-FLV、HTTP-TS 和 WebSocket-TS的详细介绍、应用场景及对比
一、前言 HTTP-FLV、WS-FLV、HTTP-TS 和 WS-TS 是针对 FLV 和 TS 格式视频流的不同传输方式。它们通过不同的协议实现视频流的传输,以满足不同的应用场景和需求。接下来我们对这些流媒体传输协议进行剖析。 二、传输协议 1、HTTP-FLV 介绍:基于 HTTP…...
【机器学习】线性回归:从基础到实践的深度解析
🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 💫个人格言: "如无必要,勿增实体" 文章目录 线性回归:从基础到实践的深度解析引言一、线性回归基础1.1 定义与目…...
短视频开源项目MoneyPrinterTurbo:AI副业搞起来,视频制作更轻松!
目录 引言一、MoneyPrinterTurbo简介二、MoneyPrinterTurbo的核心功能三、MoneyPrinterTurbo的未来发展四、MoneyPrinterTurbo与AI副业五、部署实践1、克隆代码2、创建虚拟环境3、安装依赖4、安装好 ImageMagick5、端口映射6、启动Web界面7、模型配置8、填写主题9、视频生成10、…...
【JAVA】SpringBoot + skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上
【JAVA】SpringBoot skywalking 将接口的入参、出参、异常等信息上报到skywalking 链路追踪服务器上 1.下载SkyWalking APM https://skywalking.apache.org/downloads/ jdk8 不支持 SkyWalking APM 9.3.0以上版本,所以这里我们下载 9.3.0版本 2.下载 Java Agent …...
[xmake]构建静态库和动态库
xmake 静态库和动态库 在xmake中创建静态库和动态库的方法非常相似。以下是创建静态库和动态库的基本步骤: 创建xmake工程文件(xmake.lua)。 配置工程属性,包括工程名、版本等。 添加源代码文件到工程中。 设置是创建静态库还…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
