ist1 = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
list2 = ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']
list5 = []
temp = input('請輸入西元年份或是天干地支:')
while temp.isdecimal():
year = int(temp)
print('西元 ', year , '年是' , list1 , list2 , '年')
break
while temp.isalpha():
list3 = list1 * 6
list4 = list2 * 5
for x in range(60):
list5.extend([ , list4]])
count = list5.index( , temp])
answer = (2018 // 60) * 60 + 4 + count
if answer < 2018:
print('西元 ' , answer , '年是' , temp , ' 年')
print('西元 ' , answer + 60 , '年是' , temp , ' 年')
elif answer >2018:
print('西元 ' , answer - 60 , '年是' , temp , ' 年')
print('西元 ' , answer , '年是' , temp , ' 年')
else:
print('西元 2018 是' , temp , ' 年')
break tiangan = {0: '甲', 1: '乙', 2: '丙', 3: '丁', 4: '戊', 5: '己', 6: '庚', 7: '辛', 8: '壬', 9: '癸'}
dizhi = {0: '子', 1: '丑', 2: '寅', 3: '卯', 4: '辰', 5: '巳', 6: '午', 7: '未', 8: '申', 9: '酉', 10: '戌', 11: '亥'}
def fun1(a):
a = a - 1984
t = tiangan
d = dizhi
print(t+d)
def fun2(a):
t = target[:1]
d = target
tiangan_plus = 0
dizhi_plus = 0
for i in tiangan:
if tiangan == t:
tiangan_plus = i
break
for i in dizhi:
if dizhi == d:
dizhi_plus = i
break
location = int( ((tiangan_plus+10-dizhi_plus) % 10)/2*12+dizhi_plus+ 1984)
if location < 2018 :
location += 60
if location != 2018 :
print('上一个%s年是%s年' %(target, location - 60))
print('下一个%s年是%s年' %(target, location ))
else:
print('今年%s年正好是%s年' %(location, target))
print('上一个%s年是%s年' %(target, location - 60))
print('下一个%s年是%s年' %(target, location + 60))
'''------------------------------------------------------------------------------'''
target = input('输入年份,如2018,或干支,如戊戌:')
if target.isdigit() == True:
fun1(int(target))
elif target[:1] not in tiangan.values() or target not in dizhi.values():
print('输入错误!')
else:
fun2(target)
import time
tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
def digit(year):
year_gan=(int(year[-1])-3)%10
year_zhi=(int(year)+7)%12
# print(f'{tiangan}'f'{dizhi}')#直接打印无法引用
return (f'{tiangan}'f'{dizhi}')
def alpha(tiangan):
year=time.asctime().split()[-1]
if digit(year)==tiangan:
print(f'本年为{tiangan}')
year=int(year)
# print(print(f'上一个{tiangan}年为{i}') for i in range(year-60,year)if digit(str(i))==tiangan ) #先for再if
for i in range(year-60,year):
if digit(str(i))==tiangan:
print(f'上一个{tiangan}年为{i}')
for i in range(year+1,year+61):
if digit(str(i)) == tiangan:
print(f'下一个{tiangan}年为{i}')
def result(alnum):
if alnum.isdigit(): #isdigit() 方法
print(digit(alnum))
elif len(alnum)==2 and alnum in tiangan and alnum in dizhi:
alpha(alnum)
else:
print('输入错误!')
while True:
alnum=input('输入年份,如2017,或天干地支,如丁酉:')
if alnum=='':
break
result(alnum)
每次循环鼠标默认在最前面,有什么好办法吗? import datetime
year1=datetime.datetime.now().year
tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
def getGanzhi(year):
if year==2022:
return '壬寅'
elif year>2022:
return tiangan[(year-2022+8)%10]+dizhi[(year-2022+2)%12]
else:
return tiangan+dizhi
while True:
s=input('输入年份,如2017,或干支,如丁酉:')
if s.isdigit():
print(getGanzhi(int(s)))
break
else:
if s in tiangan and s in dizhi and len(s)==2:
if str(getGanzhi(year1))==s:
print(year1-60,year1,year1+60)
else:
for i in range(year1+1,year1+60):
if str(getGanzhi(i))==s:
print(i-60,i)
break
break
else:
print('输入错误,请重新输入')
import time
def year_ng(year):
global tg,dz
t = year % 10
if t > 3:
ntg = t -3
else:
ntg = t-3+10
d = year % 12
if d > 3:
ndz = d-3
else:
ndz = d-3+12
return tg+dz
def ng_year(td):
global tg,dz,list_ng
year = time.localtime() #获取今年是哪一年
if td == year_ng(year):
return ("今年{0}正好是{1}年\n上一个{1}年是{2}\n下一个{1}年是{3}".format(year,td,year-60,year+60))
else:
tyear = list_ng.index('戊戌')
nyear = list_ng.index(td)
if tyear > nyear:
x = tyear-nyear
return ("上一个%s年是%d\n下一个%s年是%d"%(td,(year-x),td,(year-x+60)))
if tyear < nyear:
x = nyear - tyear
return ("上一个%s年是%d\n下一个%s年是%d"%(td,(year+x-60),td,(year+x)))
tg = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
dz = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
i = 0
list_ng= []
while i < 60:
t = tg.pop(0)
tg.append(t)
d = dz.pop(0)
dz.append(d)
list_ng.append(t+d)
i += 1
while 1:
n = input("输入年份(如2017), 或干支(如丁酉):")
if n.isdigit():
print(year_ng(int(n)),"\n")
elif n in list_ng:
print(ng_year(n),"\n")
else:
print("输入错误!!!\n")
输入年份(如2017), 或干支(如丁酉):2018
戊戌
输入年份(如2017), 或干支(如丁酉):戊戌
今年2018正好是戊戌年
上一个戊戌年是1958
下一个戊戌年是2078
输入年份(如2017), 或干支(如丁酉):2019
己亥
输入年份(如2017), 或干支(如丁酉):己亥
上一个己亥年是1959
下一个己亥年是2019
输入年份(如2017), 或干支(如丁酉):we
输入错误!!!
输入年份(如2017), 或干支(如丁酉): import datetime
tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
td=[]
s1= 0
s2= 0
while True:
if s1>=len(tiangan):
s1=0
if s2>=len(dizhi):
s2=0
SS=tiangan+dizhi
if SS not in td:
td.append(SS)
else:
break
s1+=1
s2+=1
while True:
data = input('输入年份,如2017,或干支,如丁酉:')
t=data.isdigit()
if data in td or (t and isinstance(int(data),int)):
break
else:
print('输入错误')
def yearToganzhi(data):
n = int(data)%10-3
m = int(data)%12-3
if n>0:
gan = tiangan
else:
gan=tiangan
if m>0:
zhi = dizhi
else:
zhi = dizhi
result = gan+zhi
return result
def ganzhiToyear(data):
datanow = datetime.datetime.now().year
ganzhinow = yearToganzhi(datanow)
index1 = td.index(ganzhinow)
index2 = td.index(data)
if ganzhinow==data:
yearl= datanow - 60
yearn= datanow + 60
elif index1>index2:
yearl = datanow -(index1-index2)
yearn = datanow-(index1-index2)+60
else:
yearl=datanow+(index2-index1)-60
yearn=datanow+(index2-index1)
return (ganzhinow,yearl,yearn)
if t:
print(yearToganzhi(data))
else:
a,b,c=ganzhiToyear(data)
if a == data:
print('今年%d的正好是%s年'%(datetime.datetime.now().year,data))
print('上一个%s年是%d'%(data,b))
print('下一个%s年是%d'%(data,c))
else:
print('上一个%s年是%d'%(data,b))
print('下一个%s年是%d'%(data,c)) import datetime
tg = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸'] * 6
dz = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥'] * 5
gz = +dz for i in range(60)]
def tianzhi(year):
if year in gz:
now_y = datetime.datetime.now().year
now_gz = gz[(now_y - 1984) % 60]
ix1 = gz.index(now_gz)
ix2 = gz.index(year)
if ix1 == ix2:
print('今年%d正好是%s年!' % (now_y, year))
print('上一个%s年是%d年!' % (year, now_y - 60))
print('下一个%s年是%d年!' % (year, now_y + 60))
elif ix1 > ix2:
print('上一个%s年是%d年!' % (year, now_y - ix1 + ix2))
print('下一个%s年是%d年!' % (year, now_y - ix1 + ix2 + 60))
elif ix1 < ix2:
print('上一个%s年是%d年!' % (year, now_y - ix1 + ix2 - 60))
print('下一个%s年是%d年!' % (year, now_y - ix1 + ix2))
else:
year = int(year)
print(gz[(year - 1984) % 60])
try:
while True:
year = input('输入年份,如2019,或干支,如己亥(输入q退出):')
if year == 'q':
break
else:
tianzhi(year)
except ValueError:
print('输入错误!')
本帖最后由 panheng 于 2019-8-22 20:53 编辑
import re
tiangan = ['甲', '乙', '丙', '丁', '戊', '己', '庚', '辛', '壬', '癸']
dizhi = ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']
dict1 = dict()
list1 = []
for year in range(0, 60): #创建出检索天干字典
result = tiangan + dizhi
list1.append(result)
dict1 = result
str1 = input("请输入需要查询的年份或干支(例如:2019、戊戌):")
today = 2017 # 定义检索起点
while True:
if re.match(r'^\d+,str1): # 正则表达式检索如果输入的为年份
key = (int(str1) - 4) % 60 # 2019年为己亥对应 35将输入年份余60后,反差得出检索值为(年份-4)
print(dict1)
break
if str1 in list1: # 列表检索如果输入的为干支
this_year = (dict1[(today-4) % 60])
if str1 == this_year: # 如果正好为本年干支
print("今年%s正好是 %s 年" % (today, this_year))
print('上一个 %s 年是 %s 年' % (this_year, today - 60))
print('下一个 %s 年是 %s 年' % (this_year, today + 60))
else: # while 循环查找符合年份
n = today
while str1 != dict1[(n - 4) % 60]:
n += 1
print("上一个 %s 年是 %s 年" % (str1, n-60))
print("下一个 %s 年是 %s 年" % (str1, n))
break
else:
str1 = input("输入错误!请输入年份或干支(例如:2019、戊戌):") import time
def fun32():
Tiangan = {3:"甲",4:"乙",5:"丙",6:"丁",7:"戊",8:"己",9:"庚",0:"辛",1:"壬",2:"癸"}
DiZhi = {3:"子",4:"丑",5:"寅",6:"卯",7:"辰",8:"巳",9:"午",10:"未",11:"申",0:"酉",1:"戌",2:"亥"}
ShengXiao = {"子":"鼠","丑":"牛","寅":"虎","卯":"兔","辰":"龙","巳":"蛇","午":"马","未":"羊","申":"猴","酉":"鸡","戌":"狗","亥":"猪"}
Jiazibiao = {1:"甲子", 11:"甲戌", 21:"甲申",31:"甲午",41:"甲辰",51:"甲寅",
2:"乙丑",12:"乙亥",22:"乙酉",32:"乙未",42:"乙巳",52:"乙卯",
3:"丙寅",13:"丙子",23:"丙戌",33:"丙申",43:"丙午",53:"丙辰",
4:"丁卯",14:"丁丑",24:"丁亥",34:"丁酉",44:"丁未",54:"丁巳",
5:"戊辰",15:"戊寅",25:"戊子",35:"戊戌",45:"戊申",55:"戊午",
6:"己巳",16:"己卯",26:"己丑",36:"己亥",46:"己酉",56:"己未",
7:"庚午",17:"庚辰",27:"庚寅",37:"庚子",47:"庚戌",57:"庚申",
8:"辛未",18:"辛巳",28:"辛卯",38:"辛丑",48:"辛亥",58:"辛酉",
9:"壬申",19:"壬午",29:"壬辰",39:"壬寅",49:"壬子",59:"壬戌",
10:"癸酉",20:"癸未",30:"癸巳",40:"癸卯",50:"癸丑",60:"癸亥"}
localtime = time.asctime( time.localtime(time.time()))
LCurrentYear=localtime.split(" ")
CurrentYear=LCurrentYear
Year = str(input("请输入年份:"))
Tian = Tiangan)]
Di = DiZhi
ShuXiang = ShengXiao
print("公元%s是黄历的%s年。属相是%s" % (Year,Tian+Di,ShuXiang))
GanZi = input("请输入干子:")
if GanZi in Jiazibiao.values():
for key in Jiazibiao.keys():
if Jiazibiao== GanZi:
GanZiindex = key
break
else:
print("输入干子不对")
Year = CurrentYear
Tian = Tiangan)]
Di = DiZhi
CurrentYearGanZi=Tian+Di
for key1 in Jiazibiao.keys():
if Jiazibiao== CurrentYearGanZi:
CurrentYearGanZiindex = key1
break
if CurrentYearGanZi==GanZi:
print("上一个%s年是%d.下一个%s年时%d.本年%d也是%s年" % (GanZi,int(Year)-60,GanZi,int(Year)+60,int(CurrentYear),GanZi))
else:
print("上一个%s年是%d.下一个%s年时%d." % (GanZi,int(Year)-(CurrentYearGanZiindex-GanZiindex),GanZi,int(Year)-(CurrentYearGanZiindex-GanZiindex)+60)) 学习
页:
1
[2]