猫史档案馆


【Python作品分享】中国农历算法【教程贴】

用户:e国阳光e国阳光查看:0 回复:0 评论:0 创建时间:2021-03-06T16:13:07


【作品展示】

center_image

 

【作品介绍】

更多课程打开http://www.5xstar.com。

 

【作品源代码】

'''
中国农历算法

    很多人只知道农历是用十天干(甲、乙、丙、
丁、戊、己、庚、辛、壬、癸)和十二地支(子、
丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)
相配对来标定的,但不知道相配的方法。本文对
这相配的方法进行深入浅出的介绍,并制作成
Python模块。
    首先要知道农历虽然用天干地支来标定,但
并不是天干与地支的数学组合。事实上,天干和
地支互不相干循环标识年份,这样天干年份的周
期是10年;地支年份的周期是12年。
    其次,每过10的整数年,天干年份就和原来
的一样;每过12的整数年,地支年份就和原来
的一样。过6次10年就是60年,天干年份是原
来的一样;过5次12年也是60年,地支年份是原
来的一样。就是说天干地支年的周期是60年(
10与12的最小公倍数)。
    最后,农历历史悠久,具体从那年开始计算
难以考究,但有一点是确定的,开始计算的那一
年是甲子年。这样,每隔60年就会有一个甲子年。
最近的甲子年对应的是公元1984年。这样就提供
了一个简单的算法:公元年数减1984的差,除以
10的余数(如为负数加10)对应天干年份(从0
开始);除以12的余数(如为负数加12)对应地
支年份(从0开始)。
'''
#一个甲子年
jz = 1984
#天干
tz = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
#地支
dg = [('子','鼠'),('丑','牛'),('寅','虎'),('卯','兔'),('辰','龙'),('巳','蛇'),('午','马'),('未','羊'),('申','猴'),('酉','鸡'),('戌','狗'),('亥','猪')]
while True:
    try:
        gln = int(input("请输入查询年份的对应公元年份:"))
    except ValueError:
        print("请输入1个整数!")
        continue
    if gln<1 or gln>10000:
        print("请输入1到10000的整数!")
        continue   
    #与甲子年的差
    jzc = gln - jz
    #天干年份
    tzn = jzc % 10
    if tzn < 0:
       tzn += 10
    #地支年份
    dgn = jzc % 12
    if dgn < 0:
       dgn += 12
    #输出农历年份
    print("公元%d年对应的农历是%s%s年(%s年)。" % (gln, tz[tzn], dg[dgn][0], dg[dgn][1]))

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页