python实现nextday()——输入一个日期,输出它的下一天

输入一个日期,输出下一天的日期。


一、代码思想

1.输入部分

  • 分别输入年、月、日
  • 对每次输入的值进行初步判断,如果不合法,返回:输入不合法,并要求重新输入

2.判断部分

  • 主要思路:因为相同day出现的频率大于月,大于年,所以以day为第一层判断更能简化代码
  • 其余的过程都在代码注释里面,超超详细,几乎每行都注释了
  • 闰年:能被4整除并且不能被100整除,或者是能被400整除的年份
import sys # 目的是为了调用exit()中途退出程序

print("——————————————本系统用于输出某一天的下一天日期——————————————")
tmp = 1
while tmp:
    year = int(input("请输入年份:"))
    month = int(input("请输入月份:"))
    day = int(input("请输入是这个月的第几天:"))

    if month < 12 and month > 0 and day <= 31 and day > -1: 
        tmp = 0
    else:
        print("非法输入!请重新输入")
     
if day == 31:                        # 当day为31  
    if month in [1,3,5,7,8,10]:      # 大月 月份+1, day = 1
        month += 1
        day = 1
    elif month == 12:                # 12月 年份+1, 月份 = 1, day = 1
        year += 1
        month = 1
        day = 1
    else:                            # 其他月份: 非法
        print("非法输入!")
        sys.exit()          #    结束程序

elif day == 30:                      # 当day为30
    if month in [1,3,5,7,8,10,12]:   # 大月:day + 1
        day += 1
    elif month in [4,6,9,11]:        # 小月:月份+1, day = 1
        month += 1
        day = 1
    else:                            # 2月:非法
        print("非法输入!")
        sys.exit()

elif day == 29:                      # 当day为29
    if month == 2 and (not (year % 4) and year % 100) or not (year % 400):      #2月闰年:月+1, day = 1
        month += 1
        day = 1
    elif month == 2:                 # 二月平年:非法                                         
        print("非法输入!")
        sys.exit()
    else:                            # 其他月份
        day += 1
#
elif day == 28:                      # day 为28
    if month == 2 and not((not (year % 4) and year % 100) or not (year % 400)):                 # 2月平年:月+1,  day = 1
        month += 1
        day = 1
    else:                            # 2月平年之外的其他日期
        day += 1
###————除了特殊的三天之外的其他日期————###
else:
    day += 1
print("当前日期的下一天是:",year,"年",month,"月",day,"日")

总计50行

二、运行结果

1.分别输入错误的日期,正确的日期

2.输入闰年和2月29日

3.输入4月31日


坚持创作不易,谢谢大家的点赞和关注^-^


版权声明:本文为xinanbo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。