使用python做了个简单的判定年份的程序
1、先把天干地支和生肖都列出来
gan = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
zhi = ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']
shengxiao = ['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']
2、获得今年的干支和年份
这里我用了一个自定义类作为容器,将天干、地支、年份作为类的属性保存。
class nowyear(object):
year = 2021
gan = 6
zhi = 0
为什么只有干支,没有生肖呢?因为生肖和地支是相同的呀,生肖12个,地支也是12个,他们的序列是一致的,获得了地支也就获得了生肖的了。嗯,我真聪明~
3、获得输入的年份
我们用一个inport获得输入的年份,并赋值给一个变量
iyear = int(input('请输入年份:'))
为什么要用int()包着?因为输入的是字符串,需要转换为整形才能进行后面的计算
3、天干、地支的计算方式
天干一共有10个,地支有12个。以当前年份为基准,每相差1年,则递减1位。如果天干相差数大于10,则取余。地支数大于12取余。
那计算方法 就有了
#计算差值
i = nowyear.year-iyear
#获得干支和生肖的数字
#天干
igan = i % 10
#地支,生肖一致
izhi = i % 12
得出差值了,那我们将天干和地支分别相减
#列出天干地支
igan = nowyear.gan-igan
izhi = nowyear.zhi-izhi
我们用的相减,难道不怕出现负数吗?
不!我们不怕!
gan[-1] 是多少?自己看下就知道了!
那么就到最后的输出了
print(str(iyear),'年:',gan[igan]+zhi[izhi]+shengxiao[izhi])
最后是全部源码
gan = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
zhi = ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']
shengxiao = ['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']
class nowyear(object):
year = 2021
gan = 6
zhi = 0
#nowyear = {'year':2021,'gan':6,'zhi':0,'shengxiao':0}
def js():
iyear = int(input('请输入年份:'))
#计算差值
i = nowyear.year-iyear
#获得干支和生肖的数字
igan = i % 10
izhi = i % 12#生肖一致
#列出天干地支和生肖
igan = nowyear.gan-igan
izhi = nowyear.zhi-izhi
print(str(iyear),'年:',gan[igan]+zhi[izhi]+shengxiao[izhi])
js()
js()
我把主线流程放入一个函数里,循环调用这个函数就好了。
总结:
简单的计算就不说什么了。
要注意就是列表索引值为负数的时候会是怎样的,大家要了解下。
还有简单的自定义类,为什么我没有进行实例化就用了?
因为没必要啊!!!
我没有写任何实例化的属性啊!!!!
这篇博客介绍了如何使用Python编写一个程序,根据输入的年份计算对应的天干地支和生肖。作者通过创建自定义类来存储天干、地支和年份,并解释了如何计算差值以及处理负数的情况。最后,提供了完整的源码并提醒读者理解列表负索引及自定义类的使用。
1735





