python - 使用 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
解决方案
正如@Adam Smith 在评论中提到的那样,除非这是为了家庭作业,否则您不应该手动执行此操作,而应该使用该datetime
库。
但是要回答您的问题,通过更改该行,您不会得到任何输出,因为2019(y%100==0 and y%400!=0) and d==28
年时为假。y
因此,您的条件都不匹配并且程序结束。