|
发表于 2017-4-22 13:25:17
|
显示全部楼层
本帖最后由 ooxx7788 于 2017-4-22 14:36 编辑
- """2017=丁酉年"""
- import time
- def w_to_e(year):
- tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
- dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
- year_std = 2017
- tiangan_std = int(tiangan.index('丁'))
- dizhi_std = int(dizhi.index('酉'))
- temp = int(year) - year_std
- tiangan_search = (temp + tiangan_std) % 10
- dizhi_search = (temp + dizhi_std) % 12
- ganzhi = f'{tiangan[tiangan_search]}{dizhi[dizhi_search]}'
- return ganzhi
- def year_convert(year):
- ganzhi = {}
- for i in range(int(time.strftime('%Y')) - 30, int(time.strftime('%Y')) + 30):
- ganzhi[w_to_e(i)] = i
- try:
- print(f'{year}是{w_to_e(year)}年!')
- return w_to_e(year)
- except:
- if year in ganzhi.keys():
- if ganzhi[year] > int(time.strftime('%Y')):
- print(f'上一个{year}年是{ganzhi[year]-60}年!')
- print(f'下一个{year}年是{ganzhi[year]}年!')
- elif ganzhi[year] < int(time.strftime('%Y')):
- print(f'上一个{year}年是{ganzhi[year]}年!')
- print(f'下一个{year}年是{ganzhi[year]+60}年!')
- else:
- print(f'今年{ganzhi[year]}正好是{year}年!')
- print(f'上一个{year}年是{ganzhi[year]-60}年!')
- print(f'下一个{year}年是{ganzhi[year]+60}年!')
- return ganzhi[year]-60, ganzhi[year], ganzhi[year]+60
- else:
- print('输入错误!')
- if __name__ == '__main__':
- year_convert(input('输入年份,如2017,或干支,如丁酉:'))
复制代码
先发个答案吧,后面再慢慢改。
更新了一下,现在输入公元年会返回一个对应的干支年,而输入一个干支年会返回一个公元年元组,而元组中间是最接近当前年份的公元年,两侧分别是上下60年。
输出:
- 输入年份,如2017,或干支,如丁酉:丁酉
- 今年2017正好是丁酉年!
- 上一个丁酉年是1957年!
- 下一个丁酉年是2077年!
复制代码- 输入年份,如2017,或干支,如丁酉:1894
- 1894是甲午年!
复制代码- 输入年份,如2017,或干支,如丁酉:甲子
- 上一个甲子年是1984年!
- 下一个甲子年是2044年!
复制代码- 输入年份,如2017,或干支,如丁酉:今天的题目还不错!
- 输入错误!
复制代码 |
评分
-
查看全部评分
|