Я запускаю следующий код, чтобы получить следующий день в формате год / месяц / день по условию, но один дает желаемый результат, но с небольшим изменением кода - нет. Я использовал високосные и невисокосные годы во вложенных 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))
Вот код, который не дает вывода if строка 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 по code1 : Сегодняшний день: 2019/2/28 Следующий день: 2019/3/1
O / P по code2: Настоящий день: 2019/2/28