Python计算给出的年份的干支和生肖,简单的自定义类的应用

这篇博客介绍了如何使用Python编写一个程序,根据输入的年份计算对应的天干地支和生肖。作者通过创建自定义类来存储天干、地支和年份,并解释了如何计算差值以及处理负数的情况。最后,提供了完整的源码并提醒读者理解列表负索引及自定义类的使用。

使用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()

我把主线流程放入一个函数里,循环调用这个函数就好了。

总结:

简单的计算就不说什么了。
要注意就是列表索引值为负数的时候会是怎样的,大家要了解下。
还有简单的自定义类,为什么我没有进行实例化就用了?
因为没必要啊!!!
我没有写任何实例化的属性啊!!!!

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值