猫史档案馆


【Python作品分享】强基初中数学&学Python——第四十六课 农历算法【教程贴】

用户:e国阳光e国阳光查看:0 回复:0 评论:0 创建时间:2021-01-20T09:46:32


【作品展示】

center_image

 

【作品介绍】

农历年就像一辆车子,一个轮的直径是10,另一个轮的直径是12,要保持直行,小轮转6圈时大轮转5圈,一个甲子60年就这样来的。

更多课程请喵公众号“学思营”,六、七、八年级的童鞋可私信参加参加免费在线课程体验班。

 

【作品源代码】

'''
中国农历算法

    很多人只知道农历是用十天支(甲、乙、丙、
丁、戊、己、庚、辛、壬、癸)和十二地干(子、
丑、寅、卯、辰、巳、午、未、申、酉、戌、亥)
相配对来标定的,但不知道相配的方法。本文对
这相配的方法进行深入浅出的介绍,并制作成
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下一页