六爻排盘神机
选修课留了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)。 配置工程属性,包括工程名、版本等。 添加源代码文件到工程中。 设置是创建静态库还…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...