在某些编程习题中,经常我们会遇到输入某个日期从而来输出后面的日期。因为每个月的天数规律不同,有时输入比较多的代码来完成,在这里,使用了Python里面的字典,可以方便些。
代码如下:
# 判断是否为闰年
def isLeapYear(year):
if year%400==0 :
return 1;
else:
if year%4==0 and year%100!=0:
return 1;
else:
return 0;
def main():
flag=0 #判断是否为闰年的标志
# 存放每个月含有的天数
dict = {1: 31, 2: 'null', 3: 31, 4: 30, 5: 31, 6: 30,
7: 31, 8: 31, 9: 30,10: 31,11: 30,12: 31}
# 将输入日期进行判断是否合法
while 1:
# 判断年是否符合
while 1:
year = int(input("请输入年份:"))
if(year<1):
print("你输入的年份有问题,请重新输入")
else:
flag = isLeapYear(year)
if(flag==1):
dict[2]=29
else:
dict[2]=28
break
# 判断月是否符合
while 1:
month = int(input("请输入月份:"))
if(month>12 or month<1):
print("你输入的月份有问题,请重新输入")
else:
break
# 判断日是否符合
while 1:
day = int(input("请输入日数:"))
if(day>31 or day<1):
print("你输入的日份有问题,请重新输入")
else:
break
# 判断日与月是否错误
if day > dict[month]:
print("你输入的日期有问题,请重新输入")
else:
break
# 12月这个需要跨年的特殊月份
if month == 12:
# 都超了
if day == dict[month]:
print(year, "-", month, "-", day, "后两天分别为:")
print(year+1, "-", month+1-12, "-", day + 1 - dict[month])
print(year+1, "-", month+1-12, "-", day + 2 - dict[month])
# 超了一天
elif day == dict[month]-1:
print(year, "-", month, "-", day, "后两天分别为:")
print(year, "-", month, "-", day+1)
print(year+1, "-", month+1-12, "-", day+2-dict[month])
# 都没超
else:
print(year, "-", month, "-", day, "后两天分别为:")
print(year, "-", month, "-", day + 1)
print(year, "-", month, "-", day + 2)
# 除了12月的月份
else:
# 都超了
if day == dict[month]:
print(year, "-", month, "-", day, "后两天分别为:")
print(year, "-", month + 1, "-", day + 1 - dict[month])
print(year, "-", month + 1, "-", day + 2 - dict[month])
# 超了一天
elif day == dict[month]-1:
print(year, "-", month, "-", day, "后两天分别为:")
print(year, "-", month, "-", day + 1)
print(year, "-", month + 1, "-", day + 2 - dict[month])
# 都没超
else:
print(year, "-", month, "-", day, "后两天分别为:")
print(year, "-", month, "-", day + 1)
print(year, "-", month, "-", day + 2)
print("运行完成")
if __name__ == '__main__':
main()