鱼C论坛

 找回密码
 立即注册
查看: 9424|回复: 29

[技术交流] Python:每日一题 32(答题领鱼币)

[复制链接]
发表于 2017-12-2 00:14:09 | 显示全部楼层
  1. from datetime import datetime

  2. tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
  3. dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']


  4. # 已知2017年是丁酉年
  5. allGanzhi = []
  6. for number in range(0, 60):
  7.     gan = tiangan[number%10]
  8.     zhi = dizhi[number%12]
  9.     allGanzhi.append(gan+zhi)
  10. # 丁酉年的index
  11. indexOfDingyou = allGanzhi.index('丁酉')
  12. currentYear = datetime.now().year

  13. def judgeYear(ganzhi):
  14.     if judgeGanzhi(currentYear) == ganzhi:
  15.         print('今年%d年正好是%s年!' % (currentYear, ganzhi))
  16.         print('上一个%s年是%d年!' % (ganzhi, currentYear-60))
  17.         print('下一个%s年是%d年!' % (ganzhi, currentYear+60))
  18.     else:
  19.         ganzhiOfCurrentYear = judgeGanzhi(currentYear)
  20.         indexOfCurrentYearGanzhi = allGanzhi.index(ganzhiOfCurrentYear)
  21.         indexOfRequestedGanzhi = allGanzhi.index(ganzhi)
  22.         sub = indexOfCurrentYearGanzhi - indexOfRequestedGanzhi
  23.         lastOrNextYear = currentYear - sub
  24.         if lastOrNextYear > currentYear:
  25.             nextYear = lastOrNextYear
  26.             lastYear = nextYear - 60
  27.         else:
  28.             lastYear = lastOrNextYear
  29.             nextYear = lastYear + 60

  30.         print('上一个%s年是%d年!' % (ganzhi, lastYear))
  31.         print('下一个%s年是%d年!' % (ganzhi, nextYear))
  32.    
  33. def judgeGanzhi(year):
  34.     return allGanzhi[(year+indexOfDingyou-2017)%60]

  35. inputYearOrGanzhi = input('输入年份,如2017,或干支,如丁酉:')
  36. if inputYearOrGanzhi in allGanzhi:
  37.     judgeYear(inputYearOrGanzhi)
  38. elif inputYearOrGanzhi.isdigit() and int(inputYearOrGanzhi) > 0:
  39.     print('%s年是%s年!' % (inputYearOrGanzhi, judgeGanzhi(int(inputYearOrGanzhi))))
  40. else:
  41.     print('输入错误!')


  42. # 结果完美。只是不能判断公元前的。
  43. # 硬要写也可以,只是懒得改了,就是这么个意思。
  44. >>>
  45. 输入年份,如2017,或干支,如丁酉:戊戌
  46. 上一个戊戌年是1958年!
  47. 下一个戊戌年是2018年!
  48. >>> ================================ RESTART ================================
  49. >>>
  50. 输入年份,如2017,或干支,如丁酉:甲子
  51. 上一个甲子年是1984年!
  52. 下一个甲子年是2044年!
  53. >>> ================================ RESTART ================================
  54. >>>
  55. 输入年份,如2017,或干支,如丁酉:丁酉
  56. 今年2017年正好是丁酉年!
  57. 上一个丁酉年是1957年!
  58. 下一个丁酉年是2077年!
  59. >>> ================================ RESTART ================================
  60. >>>
  61. 输入年份,如2017,或干支,如丁酉:1985
  62. 1985年是乙丑年!
  63. >>> ================================ RESTART ================================
  64. >>>
  65. 输入年份,如2017,或干支,如丁酉:1
  66. 1年是辛酉年!
  67. >>> ================================ RESTART ================================
  68. >>>
  69. 输入年份,如2017,或干支,如丁酉:0
  70. 输入错误!
  71. >>> ================================ RESTART ================================
  72. >>>
  73. 输入年份,如2017,或干支,如丁酉:辛亥
  74. 上一个辛亥年是1971年!
  75. 下一个辛亥年是2031年!
  76. >>> ================================ RESTART ================================
  77. >>>
  78. 输入年份,如2017,或干支,如丁酉:1911
  79. 1911年是辛亥年!
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-23 11:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表