题目要求:用户输入生日,来得到其生辰八字


首先生辰八字分为四个部分,分别对应生日的四个部分,即年,月,日,时。并且由天干地支来组成。

十天干:甲,乙,丙,丁,戊,己,庚,辛,壬,癸

十二地支:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥

由于每部分的干支最初的定位不同,所以我把每一部分都设置了自己的干支list

首先做准备工作,将用户输入的生日转化为农历

from zhdate import ZhDate
from datetime import datetimebirthday=input('请输入出生日期(Y/M/D/H):') #例:2022102321
dt_date = datetime(int(birthday[0:4]),int(birthday[4:6]),int(birthday[6:8]),int(birthday[8:]))
date = str(ZhDate.from_datetime(dt_date))
print(date)

用此方法即可得到生日的农历日期

一、年干支算法

tiangan_1=['庚','辛','壬','癸','甲','乙','丙','丁','戊','己']
dizhi_1=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]#输出年的天干和地支
a,b=0,0
year = int(date[2:6])
year-=1900
year%=60
for _ in range(year):a+=1b+=1
A = a % 10
B = b % 12print(tiangan_1[A],dizhi_1[B])

二、月干支算法

tiangan_2=['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
dizhi_2=["寅","卯","辰","巳","午","未","申","酉","戌","亥","子","丑"]if date[7] == 1 :if date[8] in [1,2,0]:month = int(date[7]+date[8])else:month = int(date[7])
#月干序
mon_gx = (int(date[5])-3)*2 + month
while mon_gx >10 :mon_gx-=10
#月支序mon_zx = month
print(mon_gx,mon_zx)

三、日干支算法

(因为日干支本身的特点,计算起来比较麻烦,该代码仅供大家参考)

tiangan_3 = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
dizhi_3 = ["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]Day = int(birthday[6]+birthday[7])Y_2=int(date[4:6])
F_day = ((Y_2+7)*5 + int((Y_2+19)/4) + 15) % 60if (year % 4) == 0:if (year % 100) == 0:if (year % 400) == 0:Feb = 29else:Feb = 28else:Feb = 29
else:Feb = 28mon = int(birthday[4:6])
if mon == 1:N_day = (F_day + Day)%60
elif mon == 2:N_day = (F_day + 31 + Day)%60
elif mon == 3:N_day = (F_day + 31 + Feb + Day)%60
elif mon == 4:N_day = (F_day + 31 + Feb + 31 + Day)%60
elif mon == 5:N_day = (F_day + 31 + Feb + 31 + 30 + Day)%60
elif mon == 6:N_day = (F_day + 31 + Feb + 31 + 30 + 31 + Day)%60
elif mon == 7:N_day = (F_day + 31 + Feb + 31 + 30 + 31 + 30 + Day)%60
elif mon == 8:N_day = (F_day + 31 + Feb + 31 + 30 + 31 + 30 + 31 + Day)%60
elif mon == 9:N_day = (F_day + 31 + Feb + 31 + 30 + 31 + 30 + 31 + 31 + Day)%60
elif mon == 10:N_day = (F_day + 31 + Feb + 31 + 30 + 31 + 30 + 31 + 31 + 30 + Day)%60
elif mon == 11:N_day = (F_day + 31 + Feb + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + Day)%60
else :N_day = (F_day + 31 + Feb + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + Day)%60print(tiangan_3[N_day%10-1],dizhi_3[N_day%12-1])

四、时干支算法

tiangan_4 = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
dizhi_4 = ["丑","寅","卯","辰","巳","午","未","申","酉","戌","亥","子"]H = int(birthday[8:10])
if H == 1 or H == 2:H_dz = 1
elif H == 3 or H == 4:H_dz = 2
elif H == 5 or H == 6:H_dz = 3
elif H == 7 or H == 8:H_dz = 4
elif H == 9 or H == 10:H_dz = 5
elif H == 11 or H == 12:H_dz = 6
elif H == 13 or H == 14:H_dz = 7
elif H == 15 or H == 16:H_dz = 8
elif H == 17 or H == 18:H_dz = 9
elif H == 19 or H == 20:H_dz = 10
elif H == 21 or H == 22:H_dz = 11
else :H_dz = 12
#时天干
H_tg = ((N_day%10) * 2 + int(H/2) - 1)%10print(tiangan_4[H_tg-1],dizhi_4[H_dz-1])

综上即可得到对应的生辰八字!

从生日来推算八字(从零开始学python)相关推荐

  1. 从零开始学 Python 之运算符

    从零开始学 Python 之运算符 前言 大家好,这里是「痴海」从零开始学习 Python 系列教程.此文首发于「痴海」公众号,欢迎大家去关注.学习一门语言最好的办法,就是教懂别人.在这公众号,我会从 ...

  2. 怎么从0开始学python_如何从零开始学python

    如何从零开始学python?书声琅琅培训老师介绍,零基础的朋友学python相对来讲难度要大,但是很多python大牛都是从零基础上来的,对于这些python大牛来讲,参加合理的培训指导和有一套pyt ...

  3. 从零开始学 Python 之字符串

    从零开始学 Python 之字符串 前言 大家好,这里是「痴海」从零开始学习 Python 系列教程.此文首发于「痴海」公众号,欢迎大家去关注.学习一门语言最好的办法,就是教懂别人.在这公众号,我会从 ...

  4. 从零开始学python电子书-从零开始学Python程序设计 PDF 完整影印版

    给大家带来的一篇关于Python零基础相关的电子书资源,介绍了关于从零开始.Python.程序设计方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小172 MB,吴惠茹编写,目前豆瓣.亚马 ...

  5. 从零开始学python数据分析-从零开始学Python数据分析与挖掘 PDF 扫描版

    给大家带来的一篇关于数据挖掘相关的电子书资源,介绍了关于Python.数据分析.数据挖掘方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小67.8 MB,刘顺祥编写,目前豆瓣.亚马逊.当当 ...

  6. python 爬虫源代码-从零开始学Python网络爬虫_源代码.rar

    [实例简介] [实例截图] [核心代码] 从零开始学Python网络爬虫_源代码_1 ├── 58project │ ├── __pycache__ │ │ ├── channel_extract.c ...

  7. 从零开始学python电子书-从零开始学Python程序设计 PDF

    给大家带来的一篇关于Python相关的电子书资源,介绍了关于Python.程序设计方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小22379 MB M,吴惠茹,等编写,目前豆瓣.亚马逊. ...

  8. 从零开始学python数据分析-【01】从零开始学Python—数据分析与挖掘概述

    马云曾说"中国正迎来从IT时代到DT时代的变革",DT就是大数据时代.数据已成为企业的核心资产和宝贵资源,企业愈加重视和善加利用数据分析与挖掘技术. 1.1什么是数据分析与挖掘 数 ...

  9. 从零开始学python微课视频版-从零开始学Python(微课视频版)

    基本信息 书名:从零开始学Python(微课视频版) :89.80元 作者:何明 编著 著 出版社:中国水利水电出版社 出版日期:2020_04_01 ISBN:9787517083818 字数:64 ...

最新文章

  1. 中国建筑设计行业投资发展形势及前景规模调查报告2022-2028年版
  2. MyBatis-学习笔记12【12.Mybatis注解开发】
  3. libudev-dev 错误 libudev1 (= 204-5ubuntu20) 但是 204-5ubuntu20.5 正要被安装 解决方法
  4. 记录远程桌面登录者的IP和MAC
  5. 最初版本的simplecall是如何把2个callleg连起来的
  6. 2021-08-19初识JSP
  7. 跳过密码卸载OfficeScan
  8. 快商通对话式AI打造超级咨询师获中科院《互联网周刊》高度认可
  9. GDI+ BMP转JPG
  10. “刷脸”乘地铁,AI 诸雄的又一个掘金高地
  11. 力扣-多线程专项(一)(按序打印、交替打印、打印零与奇偶数)
  12. flask 将route放置在多个文件中的方法(蓝本)
  13. 熊猫烧香版《菊花台》pk《菊花台》
  14. Win自动配置VS Code的C++开发环境
  15. wolfpack是什么_Steam
  16. SAP中计划独立需求与生产版本的关联导致无法删除问题的处理实例
  17. Zephyr MCUBoot
  18. CVE-2020-14364:QEMU USB模块越界读写漏洞通告
  19. Sox语音转换的相关知识
  20. 普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法

热门文章

  1. [思维导图]Free Ur Mind-推荐使用FreeMind工具
  2. 小米官网登陆页面制作
  3. Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)
  4. linux 知识摘要
  5. 黄浩老师cpp平时作业(一)前五道水题
  6. 月入8千,每天2小时在家做steam搬砖
  7. 墨竹:黄金缺口有待回补,枢轴点不破空头依旧强劲?
  8. java数组游戏_基于java的挖地雷游戏
  9. Node.js | JavaScript也能写后端?
  10. 【电子产品】ThinkPad 黑将S5 尺寸