使用PYTHON制作一个八字排盘程序,用户输入姓名,阴历生日,写别,打印天干地支,主星副星
时间: 2024-06-11 19:04:29 浏览: 393
抱歉,作为AI语言模型,我无法访问本地计算机和操作系统资源,无法编写和运行Python程序。但是,我可以为您提供Python实现八字排盘的代码示例,供您参考:
```
# 导入相关模块
import datetime
# 定义天干、地支、生肖、五行列表
tian_gan = '甲乙丙丁戊己庚辛壬癸'
di_zhi = '子丑寅卯辰巳午未申酉戌亥'
sheng_xiao = '鼠牛虎兔龙蛇马羊猴鸡狗猪'
wu_xing = '金木水火土'
# 定义干支纪年表
gan_zhi_ji_nian = {
(1, 2): '甲子',
(3, 4): '乙丑',
# ... 其余干支纪年表内容请自行补充
}
# 定义八字排盘函数
def bazi(name, lunar_date, gender):
# 将阴历生日转换成阳历生日
solar_date = lunar_to_solar(lunar_date)
# 计算年份的干支
year_gan_zhi = year_ganzhi(solar_date.year)
# 计算月份的干支
month_gan_zhi = month_ganzhi(solar_date.year, solar_date.month)
# 计算日的干支
day_gan_zhi = day_ganzhi(solar_date.year, solar_date.month, solar_date.day)
# 计算时的干支
hour_gan_zhi = hour_ganzhi(solar_date, gender)
# 输出八字排盘结果
print('{}的八字排盘结果:'.format(name))
print('出生日期:{}年{}月{}日{}时'.format(solar_date.year, solar_date.month, solar_date.day, solar_date.hour))
print('年:{},月:{},日:{},时:{}'.format(year_gan_zhi, month_gan_zhi, day_gan_zhi, hour_gan_zhi))
print('主星:{},副星:{}'.format(main_star(day_gan_zhi), deputy_star(day_gan_zhi)))
# 定义阴历转阳历函数
def lunar_to_solar(lunar_date):
# 将阴历生日转换成阳历生日,此处省略具体实现细节
pass
# 定义计算年份干支函数
def year_ganzhi(year):
# 计算干支纪年
gan = tian_gan[(year - 4) % 10]
zhi = di_zhi[(year - 4) % 12]
return gan + zhi
# 定义计算月份干支函数
def month_ganzhi(year, month):
# 计算干支纪月
gan_zhi = gan_zhi_ji_nian[(year % 10, month)]
return gan_zhi[1]
# 定义计算日干支函数
def day_ganzhi(year, month, day):
# 计算干支纪日
num = (datetime.date(year, month, day) - datetime.date(1900, 1, 31)).days
gan = tian_gan[num % 10]
zhi = di_zhi[num % 12]
return gan + zhi
# 定义计算时干支函数
def hour_ganzhi(solar_date, gender):
# 计算干支纪时
hour = solar_date.hour
if hour == 23:
hour = 0
gan = tian_gan[(hour + 1) // 2 % 5 * 2 + (solar_date.day % 10 - 1) % 5]
if gender == '男':
zhi = di_zhi[hour // 2]
else:
zhi = di_zhi[(hour // 2 + 6) % 12]
return gan + zhi
# 定义计算主星副星函数
def main_star(day_gan_zhi):
# 计算主星
main = ''
for i in day_gan_zhi:
if i in '甲乙':
main += '木'
elif i in '丙丁':
main += '火'
elif i in '戊己':
main += '土'
elif i in '庚辛':
main += '金'
else:
main += '水'
return main + '星'
def deputy_star(day_gan_zhi):
# 计算副星
deputy = ''
for i in day_gan_zhi:
if i in '寅午戌申子辰':
deputy += '木'
elif i in '巳酉丑未卯亥':
deputy += '金'
elif i in '丑未':
deputy += '水'
else:
deputy += '火'
return deputy + '星'
# 测试函数
bazi('张三', '1995-03-22', '男')
```
以上为一个简单的八字排盘程序,您可以根据自己的需求进行修改和完善。
阅读全文