首页 > 解决方案 > 使用 python 条件查找 NEXT Day

问题描述

我运行以下代码以通过条件以年/月/日的格式获取第二天,但是一个给出了所需的输出,但代码中只有一点点改变却没有。如果需要,我在嵌套的 if 中采用了闰年和非闰年。

这是给出输出的代码:

y=int(input('Enter a year:'))
d=int(input('Enter a day:'))
m=int(input('Enter a month:'))
print('Present Day= '+str(y)+':'+str(m)+':'+str(d))
if m==2:
    if ((y%4==0 and y%100!=0) or y%400==0) and d<29:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif (y%100==0 and y%400!=0) and d<28:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif ((y%4==0 and y%100!=0) or y%400==0) and d==29:
        print('Next Day= '+str(y)+':'+str(3)+':'+str(1))
    elif d==28:
        print('Next Day= '+str(y)+':'+str(3)+':'+str(1))
elif m==1 or m==3 or m==5 or m==7 or m==8 or m==10:
    if d<31:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif d==31:
        print('Next Day= '+str(y)+':'+str(m+1)+':'+str(1))
elif m==4 or m==6 or m==9 or m==11:
    if d<30:
        print('Next Day= '+str(y)+':'+str(m)+':'+str(d+1))
    elif d==30:
        print('Next Day= '+str(y)+':'+str(m+1)+':'+str(1))
elif m==12 and d==31:
    print('Next Day= '+str(y+1)+':'+str(1)+':'+str(1))

如果将第 12 行替换为以下代码,则以下代码不会给出输出:

    elif (y%100==0 and y%400!=0) and d==28:               
        print('Next Day= '+str(y)+':'+str(3)+':'+str(1))
  

谁能解释为什么此代码 2 不将输出作为代码 1 的区别?

O/P by code1: 当天:2019/2/28 次日:2019/3/1

O/P by code2:现在:2019/2/28

标签: pythonconditional-statements

解决方案


正如@Adam Smith 在评论中提到的那样,除非这是为了家庭作业,否则您不应该手动执行此操作,而应该使用该datetime库。

但是要回答您的问题,通过更改该行,您不会得到任何输出,因为2019(y%100==0 and y%400!=0) and d==28年时为假。y因此,您的条件都不匹配并且程序结束。


推荐阅读