|
发表于 2017-12-2 00:14:09
|
显示全部楼层
- from datetime import datetime
- tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
- dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
- # 已知2017年是丁酉年
- allGanzhi = []
- for number in range(0, 60):
- gan = tiangan[number%10]
- zhi = dizhi[number%12]
- allGanzhi.append(gan+zhi)
- # 丁酉年的index
- indexOfDingyou = allGanzhi.index('丁酉')
- currentYear = datetime.now().year
- def judgeYear(ganzhi):
- if judgeGanzhi(currentYear) == ganzhi:
- print('今年%d年正好是%s年!' % (currentYear, ganzhi))
- print('上一个%s年是%d年!' % (ganzhi, currentYear-60))
- print('下一个%s年是%d年!' % (ganzhi, currentYear+60))
- else:
- ganzhiOfCurrentYear = judgeGanzhi(currentYear)
- indexOfCurrentYearGanzhi = allGanzhi.index(ganzhiOfCurrentYear)
- indexOfRequestedGanzhi = allGanzhi.index(ganzhi)
- sub = indexOfCurrentYearGanzhi - indexOfRequestedGanzhi
- lastOrNextYear = currentYear - sub
- if lastOrNextYear > currentYear:
- nextYear = lastOrNextYear
- lastYear = nextYear - 60
- else:
- lastYear = lastOrNextYear
- nextYear = lastYear + 60
- print('上一个%s年是%d年!' % (ganzhi, lastYear))
- print('下一个%s年是%d年!' % (ganzhi, nextYear))
-
- def judgeGanzhi(year):
- return allGanzhi[(year+indexOfDingyou-2017)%60]
- inputYearOrGanzhi = input('输入年份,如2017,或干支,如丁酉:')
- if inputYearOrGanzhi in allGanzhi:
- judgeYear(inputYearOrGanzhi)
- elif inputYearOrGanzhi.isdigit() and int(inputYearOrGanzhi) > 0:
- print('%s年是%s年!' % (inputYearOrGanzhi, judgeGanzhi(int(inputYearOrGanzhi))))
- else:
- print('输入错误!')
- # 结果完美。只是不能判断公元前的。
- # 硬要写也可以,只是懒得改了,就是这么个意思。
- >>>
- 输入年份,如2017,或干支,如丁酉:戊戌
- 上一个戊戌年是1958年!
- 下一个戊戌年是2018年!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:甲子
- 上一个甲子年是1984年!
- 下一个甲子年是2044年!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:丁酉
- 今年2017年正好是丁酉年!
- 上一个丁酉年是1957年!
- 下一个丁酉年是2077年!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:1985
- 1985年是乙丑年!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:1
- 1年是辛酉年!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:0
- 输入错误!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:辛亥
- 上一个辛亥年是1971年!
- 下一个辛亥年是2031年!
- >>> ================================ RESTART ================================
- >>>
- 输入年份,如2017,或干支,如丁酉:1911
- 1911年是辛亥年!
复制代码 |
|