Python:计算天干地支

Python:计算天干地支

亲测有效!!!
用Sublime编写,在CMD中运行正常

tianGan_list=["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"] #天干列表
diZhi_list=["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"] #地支列表
shengXiao_list=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"] #属相列表


inputYear=input("请输入年份:") #输入年份
if inputYear.isdigit()==True:
	inputYear=int(inputYear)
	if inputYear-2020>=0: #以2020年为基准,2020年之后的年份使指针向右移动
		tgPointer=abs(inputYear-2020)%10+6
		if tgPointer>9:
			tgPointer=abs(inputYear-2020)%10+6-10 #2020年是庚子年,“庚“在天干列表的序号为6,天干指针向后移动以6为基准,超过9后往前开始
		else:
			tgPointer=abs(inputYear-2020)%10+6
		dzPointer=abs(inputYear-2020)%12 #“子“在地支列表的序号为0,地支指针向后移动以0为基准
	else: #2020年之前的年份使列表指针往左移动
		if abs(inputYear-2020)%10==0:
			tgPointer=abs(inputYear-2020)%10+6 #当输入年份与2020年差值满一个天干时,指针不动,仍为6(与2020年相同)
		else:
			tgPointer=6-abs(inputYear-2020)%10 #当输入年份与2020年差值不满一个天干时,指针以6为基准向左移动,有可能移动超过6,进而出现负数

		if abs(inputYear-2020)%12==0:
			dzPointer=abs(inputYear-2020)%12 #当输入年份与2020年差值满一个地支时,指针不动,仍为0(与2020年相同)
		else:
			dzPointer=12-(abs(inputYear-2020)%12) #当输入年份与2020年差值不满一个地支时,指针以0为基准向左移动(不能有负数,需要用12减) 

	if tgPointer>=0 and tgPointer<=9: 
		tianGan=tianGan_list[tgPointer] #天干指针在正常范围内,直接调取天干列表内容
	else:
		tianGan=tianGan_list[tgPointer+10] #天干指针出现负值,用6减,确保在正常范围内,然后调取天干列表内容

	diZhi=diZhi_list[dzPointer] #9/17/19行地支不可能出现负值,所以没必要再进行选择,直接调取地支列表内容即可
	shengXiao=shengXiao_list[dzPointer] #生肖与地支一一对应

	print("{}年是{}{}{}年".format(inputYear,tianGan,diZhi,shengXiao))
else:
	print("输入错误,请重新输入!")
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlwayswetHXZhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值