year = 0
month = 0
day = 0
num = 3
#表示输入类型是否正确,默认为1,即错误
flag = 1
for i in range(0,3):
"""用户输入日期,如果日期格式输入有误,重新输入,最多可以输入3次"""
date = input("请输入您要查询的日期,日期格式为'yyyymmdd':")
#把输入的日期进行拆分
if len(date) == 8:
try:
int(date[0:4])
except ValueError:
print("请检查你输入的格式是否正确,您还有%d次机会" % (num-1))
# print("----2----")
num -= 1
else:
year = int(date[0:4])
try:
int(date[4:6])
except ValueError:
print("请检查你输入的格式是否正确,您还有%d次机会" % (num-1))
# print("----3----")
num -= 1
else:
month = int(date[4:6])
try:
int(date[6:8])
except ValueError:
print("请检查你输入的格式是否正确,您还有%d次机会" % (num-1))
# print("----4----")
num -= 1
else:
day = int(date[6:8])
flag = 0
if flag == 0:
break
else:
print("请检查你输入的格式是否正确,您还有%d次机会" % (num-1))
# print("----1----")
num -= 1
#print("flag=%d" % flag)
#存储平年每个月的天数
day_1 = {
"1":31,"2":28,"3":31,"4":30,
"5":31,"6":30,"7":31,"8":31,
"9":30,"10":31,"11":30,"12":31
}
#存储闰年每个月的天数
day_2 = {
"1":31,"2":29,"3":31,"4":30,
"5":31,"6":30,"7":31,"8":31,
"9":30,"10":31,"11":30,"12":31
}
def is_leaf(year):
"""判断日期年份是否为闰年"""
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
return True
else:
return False
def date_num(year,month,day):
"""计算输入日期是这一年的第几天"""
day_sum = 0
if is_leaf(year):
for i in range(1,month):
day_sum += day_2[str(i)]
day_sum += day
else:
for i in range(1,month):
day_sum += day_1[str(i)]
day_sum += day
print("%s是次年份的第%d天" % (date, day_sum))
if flag==0:
date_num(year,month,day)