在某些編程習題中,經常我們會遇到輸入某個日期從而來輸出後面的日期。因爲每個月的天數規律不同,有時輸入比較多的代碼來完成,在這裏,使用了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()